小白记录~Hibernate中session.load方法与session.get方法区别

来源:互联网 发布:域名变更备案 编辑:程序博客网 时间:2024/06/01 07:57
主要是session.load与session.get方法区别
session.get是只要调用就去数据库查询
与session.load方法是调用了模型的非主键getter方法去查询
要注意是非主键

还是菜鸟文
话不多说  上图片与代码

load方法简单原理

load测试方法
@Testpublic void load() {Session session=null;Student student=null;try {session = HibernateUitl.getSession();student = (Student) session.load(Student.class, 2);System.out.println("~~~~~~~~~~~~~");System.out.println(student.getId());System.out.println(student.getAge());System.out.println(student.getAge());System.out.println(student.getName());} catch (HibernateException e) {e.printStackTrace();}finally {if(session!=null&&session.isOpen()){session.close();}}}

打印结果:
~~~~~~~~~~~~~2Hibernate: select student0_.s_id as s1_0_0_, student0_.s_name as s2_0_0_, student0_.s_age as s3_0_0_ from Student student0_ where student0_.s_id=?1919唐伯虎

本应该先打印SQL语句,此结果证明在需要getter属性时才去查找数据库  并且在调用一次以后,所有属性都已有值,不再去查询,进入到缓存

本来我以为当session.close后对象地址还在,也就是Student对象还存在

在session.close后,输出属性getName,报错说session不存在

所以,session.close以后,对象也将销毁
0 0
原创粉丝点击