您的位置:首页 > 其它

Hibernate基本特性三 -- 延迟加载机制

2015-12-25 19:51 253 查看
Hibernate基本特性之延迟加载机制

Hibernate在使用时,有些API操作是具有延迟加载机制的。

延迟加载机制特点

当通过Hibernate的API获取一个对象结果后,该对象并没有数据库数据,当通过对象的getter方法获取属性值时才去数据库查询加载。

a.具有延迟加载机制的操作如下:

--session.load 查询

--query.iterator 查询

--获取关联对象的属性信息

*b.常犯错误:

LazyInitalizationException:could not initialize proxy - no Session

--代码中使用了延迟加载操作,但是session在加载数据前关闭了。

c.延迟加载原理

在使用延迟加载操作后,Hibernate返回的对象是Hibernate利用CGLIB技术新生成的一个类型。在新类型中,将属性的 getter方法重写。新生成类是原实体类的子类。

public class Foo$$EnhancerByCGLIB extends Foo{
public String getName(){
//判断是否已加载过数据
//如果加载过,返回name值
//如果未加载,发送SQL查询加载数据,然后返回name值
}
}


*d.session 的get和load方法的区别:

--两者都是按主键作条件查询。

--get是立刻加载;load是延迟加载。

--get返回的对象类型是实体类型;load返回的是动态生成的代理类,该代理类是实体类的子类。

--get未查到数据返回null;load未查到数据抛出ObjectNotFoundException异常。

e.延迟加载机制好处

--提高了内存的使用效率。

--可以降低数据访问并发量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: