Hibernate的get()和load()方法

2017-04-26  本文已影响0人  逸舒紫忆

Hibernate的get和load方法区别

1、get方式会马上发出查询语句,load不会,而是先返回一个代理(继承当前实体类,可理解为空壳),当你真正需要使用它的时候才会去查询,返回相应字段信息

2、load支持lazy(延迟加载、懒加载)

什么叫lazy?

只有真正使用这个对象的时候,在创建,对于hibernate来说,才真正的发出查询语句,主要是为了提高性能

hibernate的lazy是如何实现的?

采用代理对象实现,代理对象主要采用的是CGLIB库生成的,而不是JDK的动态代理,因为JDK的动态代理只能对实现了接口的类生成代理,CGLIB可以对类生成代理,采用的是继承方式

3、get查询不存在的对象返回null,load查询不存在的数据,hibernate会抛出ObjectNotFoundException异常

hibernate的删除方式

1、先加载(get/load),再删除-----建议此法

2、手动构造detached状态的对象,再删除

都是根据ID来删

上一篇下一篇

猜你喜欢

热点阅读