1.但我们通过主键去查询时,使用get和load。区别是get会查询所有的属性,不存在懒加载问题,而load就会有懒加载的问题。
使用get不存在懒加载,可以在session关闭后查出里面的数据。 而把get改为load后就会出错。
2.load的懒加载
当我们查询一个对象的时候,在默认情况下,返回的只是该对象的普通属性,当用户去使用对象属性时,才会向数据库发出再一次的查询.这种现象我们称为 lazy现象.
解决方法可以这样:
1.
2.
3.
(1) 显示初始化
public static void main(String[] args) {
//add();
Student s=lazytest();
//System.out.print(s.getName());
}
public static Student lazytest(){
Session session=null;
Transaction ts=null;
Student stu=null;
try {
session=GetSessionFactory.getcurrentsession();
ts=session.beginTransaction();
stu=(Student)session.load(Student.class, 3);
//强制hibernate去查询。
Hibernate.initialize(stu.getDept());
ts.commit();
} catch (Exception e) {
// TODO: handle exception
}
return stu;
}
(2)
<hibernate-mapping>
<class name=”com.ru.domain.Student” lazy=”false” table=”Student”>