预览模式: 普通 | 列表

hibernate数据加载

单一数据加载:Session.get/load
均可以根据指定的实体类和id从数据库中读取记录,并返回与之对应的实体对象。
区别:
1.如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
2.Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
3.load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法仅在内部缓存中查找,如果没有发现对应的数据,将越过二级缓存,直接调用SQL完成数据读取。
数据加载的过程:
1.在一级缓存中,根据实体类型和id进行查找,如果在第一级缓存中命中,...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 20 | 查看次数: 948

利于ThreadLocal模式管理Session

在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Session的频繁创建和销毁,对于提高系统的性能来说是非常重要的,以往是通过eclipse的插件来自动完成这些代码的,当然效果是不错的,但是总是觉得不爽(没有读懂那些冗长的代码),所以现在打算自己实现Session管理的代码。

我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,那么Session是否是线程安全的呢?很遗憾...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 94 | 查看次数: 1618

hibernate的级联操作

在使用Hibernate时,加入级联操作可以大大减少数据库代码的编程码量,如果使用得当对数据库效能的提高有不少的帮助。
先讲讲怎样进行级联操作。
1、有两张表Tuser和TAddress 双向关联
其中Tuserinfo中userid主键关联Tuser。
TUser.hbm.xml
[code]<hibernate-mapping>
<class
name="org.hibernate.sample.TUser"
table="t_user"
dynamic-update="true"
dynam...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 29 | 查看次数: 1731

用NamingStrategy实现动态表名映射

最近用Hibernate做一个项目的时候遇到这么一个问题:
用一个配置文件,一个类去映射多个表,(每个表的结构相同)。按照平时的做法,有多少个表就要
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢?

经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的
public String classToTableName(String className)是通过类名来映射表名的...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 87 | 查看次数: 2183

利用MyEclipse自动生成Hibernate的相关文件

使用Hibernate都需要Hibernate配置文件,以及类和表的映射文件,利用MyEclipse可以很方便的为工程添加上hibernate的支持,并且能够自动生成hibernate的映射文件和其对应的java类文件。

新建工程(或在已有的工程名上右键->MyEclipse->add Hibernate capabilities…

这样就会自动生成Hibernate Sessession Factory的java文件,并把hibernate的相关类库都会加到构建路径上,然后更具向导配置hibernate的配置文件。

打开DB Browser,根据已经有的...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 96 | 查看次数: 2545

双向关联的one-to-one

基于外键关联的双向一对一关联也很常见。
[code]
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<many-to-one name="address"
column="addressId"
uni...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 9 | 查看次数: 1345

单向关联的one-to-one

基于外键关联的单向一对一关联和单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。

<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<many-to-one name="address"
column=&qu...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 2 | 查看次数: 1358

双向关联one-to-many/many-to-one

双向,是确定了两个pojo类的方向性, 两个pojo类A和B关联,一pojo A能够得到pojoB,反之B也能得到A,pojoA有一个类型B的属性,pojoB有个类型为A的集合类型,因为一个B对应多个A。
在数据库层次上解决多对一,可以新建一张关系表,或在多的那方添加一个外键,可以不是unique。
这里举例,一个地址有多个人,采用在多的方person添加一个外键。
[code]
//数据库
create table person(
id number(10,2) not null primary key,
address_id varchar2(20)
);
...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 2 | 查看次数: 1634

many-to-one单向关联

单向,是确定了两个pojo类的方向性,只能是一个pojo A能够得到pojoB,反之不行,体现在类的定义上,pojoA有一个类型B的属性。
在数据库层次上解决多对一,可以新建一张关系表,或在多的那方添加一个外键,可以不是unique。
这里举例,一个地址有多个人,采用在多的方person添加一个外键。
<code>//数据库
create table person(
id number(10,2) not null primary key,
address_id varchar2(20)
);
create table Address(
id number...

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 6 | 查看次数: 1499

Hibernate基本结构

1。 持久类pojo
2.hibernate.cfg.xml和pojo.hbm.xml
3.基本步骤
4.基本状态

查看全部...

标签:

分类:Hibernate | 固定链接 | 评论: 5 | 查看次数: 1594