hibernate数据加载
作者:sherrydong 日期:2008-03-15
单一数据加载:Session.get/load
均可以根据指定的实体类和id从数据库中读取记录,并返回与之对应的实体对象。
区别:
1.如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
2.Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
3.load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法仅在内部缓存中查找,如果没有发现对应的数据,将越过二级缓存,直接调用SQL完成数据读取。
数据加载的过程:
1.在一级缓存中,根据实体类型和id进行查找,如果在第一级缓存中命中,...
均可以根据指定的实体类和id从数据库中读取记录,并返回与之对应的实体对象。
区别:
1.如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
2.Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
3.load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法仅在内部缓存中查找,如果没有发现对应的数据,将越过二级缓存,直接调用SQL完成数据读取。
数据加载的过程:
1.在一级缓存中,根据实体类型和id进行查找,如果在第一级缓存中命中,...
标签:
利于ThreadLocal模式管理Session
作者:sherrydong 日期:2008-03-15
在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Session的频繁创建和销毁,对于提高系统的性能来说是非常重要的,以往是通过eclipse的插件来自动完成这些代码的,当然效果是不错的,但是总是觉得不爽(没有读懂那些冗长的代码),所以现在打算自己实现Session管理的代码。
我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,那么Session是否是线程安全的呢?很遗憾...
我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,那么Session是否是线程安全的呢?很遗憾...
标签:
hibernate的级联操作
作者:sherrydong 日期:2007-04-19
用NamingStrategy实现动态表名映射
作者:sherrydong 日期:2007-04-16
最近用Hibernate做一个项目的时候遇到这么一个问题:
用一个配置文件,一个类去映射多个表,(每个表的结构相同)。按照平时的做法,有多少个表就要
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢?
经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的
public String classToTableName(String className)是通过类名来映射表名的...
用一个配置文件,一个类去映射多个表,(每个表的结构相同)。按照平时的做法,有多少个表就要
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢?
经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的
public String classToTableName(String className)是通过类名来映射表名的...
标签:
利用MyEclipse自动生成Hibernate的相关文件
作者:sherrydong 日期:2007-04-16
使用Hibernate都需要Hibernate配置文件,以及类和表的映射文件,利用MyEclipse可以很方便的为工程添加上hibernate的支持,并且能够自动生成hibernate的映射文件和其对应的java类文件。
新建工程(或在已有的工程名上右键->MyEclipse->add Hibernate capabilities…
这样就会自动生成Hibernate Sessession Factory的java文件,并把hibernate的相关类库都会加到构建路径上,然后更具向导配置hibernate的配置文件。
打开DB Browser,根据已经有的...
新建工程(或在已有的工程名上右键->MyEclipse->add Hibernate capabilities…
这样就会自动生成Hibernate Sessession Factory的java文件,并把hibernate的相关类库都会加到构建路径上,然后更具向导配置hibernate的配置文件。
打开DB Browser,根据已经有的...
标签:
双向关联的one-to-one
作者:sherrydong 日期:2007-01-26
单向关联的one-to-one
作者:sherrydong 日期:2007-01-26
双向关联one-to-many/many-to-one
作者:sherrydong 日期:2007-01-26
双向,是确定了两个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)
);
...
在数据库层次上解决多对一,可以新建一张关系表,或在多的那方添加一个外键,可以不是unique。
这里举例,一个地址有多个人,采用在多的方person添加一个外键。
[code]
//数据库
create table person(
id number(10,2) not null primary key,
address_id varchar2(20)
);
...
标签:
many-to-one单向关联
作者:sherrydong 日期:2007-01-26
单向,是确定了两个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...
在数据库层次上解决多对一,可以新建一张关系表,或在多的那方添加一个外键,可以不是unique。
这里举例,一个地址有多个人,采用在多的方person添加一个外键。
<code>//数据库
create table person(
id number(10,2) not null primary key,
address_id varchar2(20)
);
create table Address(
id number...
标签:

