文章目录
1. hibernate之延迟加载1.1. 什么是延迟加载1.2. 好处1.3. 如何使用延迟加载1.4. 使用延迟加载需要注意的问题hibernate之延迟加载什么是延迟加载在使用某些Hibernate方法查询数据的时候,Hibernate返回的只是一个空对象(除了id外属性都为null),并没有真正的查询数据库。而是在使用这个对象的时候才会出发查询数据,并将查询到的数据注入到这个空对象中,这种查询时机推迟到对象访问时的机制称之为延迟加载。简单的说,使用延迟加载获取的对象,只有在获取其中的除了id之外的属性才会发出sql语句。好处可以提升内存资源的使用率
可以降低对数据库的访问次数
如何使用延迟加载session.load()query.iterate()代码语言:javascript复制@Test
public void Testload() {
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
//使用延迟加载load()方法获取对象,这里并没有发出sql查询语句,其中除了一个id属性之外没有其他的属性
Student student=session.load(Student.class,2);
//查询其中的id属性,这里也没有发出查询语句
System.out.println(student.getId());
//查询对象中的name属性,这里将会发出查询的sql语句
System.out.println(student.getName());
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}使用延迟加载需要注意的问题采用延迟加载机制的操作,需要避免session的提前关闭。避免在使用对象之前关闭session
因为在使用延迟加载的时候并没有发出sql查询语句,只有当使用其中的除了id属性之外的属性才会发出查询语句,因此这里的session不能提前关闭