Hibernate的load方法采用了延迟加载策略,如以下代码:
public void testLoad() {
Session session = null;
Transaction tx = null;
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
//load方法支持延迟加载(lazy),此时没有发出查询语句
//load方法返回的不是User实例,而是一个代理对象(Hibernate使用了CGLIB)
User user = (User) session.load(User.class, "4028808431ec405e0131ec4060820001");
//发出查询sql
System.out.println(user.getName());
tx.commit();
} catch (Exception e) {
if(null != tx) {
tx.rollback();
}
e.printStackTrace();
} finally {
if(null != session && session.isOpen()) {
session.close();
}
}
}
通过get方法查询对象时,Hibernate会立即发出sql返回一个persistent对象;但load不同,使用load方法并不会立即发sql,而是通过CGLIB返回一个代理对象,直到需要persistent对象时才会发出sql查询,这样就实现了延迟加载(其实load方法也可以和get方法一样返回一个persistent对象,这里暂不说明)。
分享到:
相关推荐
Hibernate 的 lazyload 在FLEX中的解决方法例子 用的是gilead 因为LIB包太大上传很慢所以被我删掉了。
NULL 博文链接:https://ysj5125094.iteye.com/blog/1897557
get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库
NULL 博文链接:https://811417208-qq-com.iteye.com/blog/506950
Hibernate Session中的 flush方法的作用 get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org....
Hibernate持久层方法汇总 session.load, session.find, session.iterator, session.save, session.update, session.saveorupdate
Hibernate中有两个极为相似的方法get()与load(),他们都可以通过指定的实体类与ID从数据库中读取数据,并返回对应的实例,但Hibernate不会搞两个完全一样的方法的
NULL 博文链接:https://cici9898-007.iteye.com/blog/1847710
hibernate中get和load的区别共5页.pdf.zip
//该方法将到classpath下解析hibernate.cfg.xml中的配置,如果不用Hibernate默认的配置文件名和路径,可在该方法中指定Hibernate配置文件的名称和路径 2.用Configuration对象获取SessionFactory和Session对象:...
NULL 博文链接:https://quicker.iteye.com/blog/658451
2、load()方法 3、批量存储:session.flush()和session.clear() 二 Hibernate中的二级缓存结构 在Hibernate中使用两极缓存结构,第一级缓存是Session级别的缓存,...
Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术。这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。...
04_Session接口及get|load|persist方法 05_实体对象的三种状态与saveOrUpdate方法 06_完善HibernateUtil类及hql查询入门 07_实体类或属性名与数据库关键字冲突问题 10_使用Hibernate完成CRUD实验的步骤说明 11_...
由于项目需求的需要,我们引入了连接池。...我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool
今天小编就为大家分享一篇关于Hibernate中Session.get()方法和load()方法的详细比较,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
8.4.2 Session的load()和get()方法 8.4.3 Session的update()方法 8.4.4 Session的saveOrUpdate()方法 8.4.5 Session的merge()方法 8.4.6 Session的delete()方法 8.4.7 Session的replicate()方法 8.5 ...
当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...
Hibernate 学习笔记 get和load的区别 一对一,一对多,多对多 悲观锁,乐观锁 hibernate查询语言hql hibernate一级缓存、二级缓存 抓取策略