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来删
网友评论