Session.load()和get()方法区别
2013-03-26 21:18
302 查看
Hibernate中Session的load()和get()方法的使用区别
1、当数据库不存在对应ID数据时,调用load()方法将会抛出ObjectNotFoundException异常,get()方法将返回null,我比较喜欢使用get()方法。
2、当对象.hbm.xml配置文件<class>元素的lazy属性设置为true时,调用load()方法时则返回持久对象的代理类实例,此时的代理类实例是由运行时动态生成的类,该代理类实例包括原目标对象的所有属性和方法,该代理类实例的属性除了ID不为null外,所在属性为null值,查看日志并没有Hibernate SQL输出,说明没有执行查询操作,当代理类实例通过getXXX()方法获取属性值时,Hiberante才真正执行数据库查询操作。当对象.hbm.xml配置文件<class>元素的lazy属性设置为false时,调用load()方法则是立即执行数据库并直接返回实体类,并不返回代理类。而调用get()方法时不管lazy为何值,都直接返回实体类。
3、load()和get()都会先从Session缓存中查找,如果没有找到对应的对象,则查询Hibernate二级缓存,再找不到该对象,则发送一条SQL语句查询。
1、当数据库不存在对应ID数据时,调用load()方法将会抛出ObjectNotFoundException异常,get()方法将返回null,我比较喜欢使用get()方法。
2、当对象.hbm.xml配置文件<class>元素的lazy属性设置为true时,调用load()方法时则返回持久对象的代理类实例,此时的代理类实例是由运行时动态生成的类,该代理类实例包括原目标对象的所有属性和方法,该代理类实例的属性除了ID不为null外,所在属性为null值,查看日志并没有Hibernate SQL输出,说明没有执行查询操作,当代理类实例通过getXXX()方法获取属性值时,Hiberante才真正执行数据库查询操作。当对象.hbm.xml配置文件<class>元素的lazy属性设置为false时,调用load()方法则是立即执行数据库并直接返回实体类,并不返回代理类。而调用get()方法时不管lazy为何值,都直接返回实体类。
3、load()和get()都会先从Session缓存中查找,如果没有找到对应的对象,则查询Hibernate二级缓存,再找不到该对象,则发送一条SQL语句查询。
相关文章推荐
- Hibernate中session的get和load方法的区别
- hibernate中session的load( class,arg)和get( class,arg)方法的区别
- Session.load()和Session.get()方法的区别
- Session中load/get方法的详细区别
- 使用Hibernate时,Session的get()方法和load()方法的区别?
- Hibernate中session回话的get方法和load方法的区别
- 对象的三种状态(hibernate的session的get和load方法的区别,session的常用方法,session缓存)
- 面试题——Session的get方法 与 load方法区别
- session的get()方法和load()方法的区别
- Session.load()和get()方法区别
- Session的load()和get()方法使用区别:
- hibernate读取数据库里内容,session的get方法和load方法的区别
- 常用代码块模板,get,load区别,session.get(,)参数解释,session方法总结
- Hibernate之Session的方法get()与load()的区别
- Hibernate session.get()和session.load()方法的区别
- Java - Hibernate中Session的load和get方法的区别是什么?
- 浅谈Hibernate中Session查询时get方法与load方法的区别
- Session的get和load方法区别
- Session对象的load()方法和get()方法的区别
- Hibernate中Session之get和load方法的真正区别