hibernate中session的load和get方法
来源:互联网 发布:保险公司首席数据官 编辑:程序博客网 时间:2024/06/05 19:54
session中load的get的关系
一、load方法
Configuration cfg = new AnnotationConfiguration();SessionFactory sf = cfg.configure().buildSessionFactory();Session session = sf.openSession();session.beginTransaction();Student student =(Student)session.load(Student.class, 1); System.out.println(student.getId()+""+student.getName()+""+student.getAge());session.getTransaction().commit();session.close();
解释:该段代码作用,取出主键为1的对象,并赋值给一个Student对象。如果把system语句放在commit()之后会出现以下错误
09:11:59,048 ERROR LazyInitializationException:42 - could not initialize proxy - no Sessionorg.hibernate.LazyInitializationException: could not initialize proxy noSessionatorg.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) at com.demo_1.Student_$$_javassist_0.getName(Student_$$_javassist_0.java) at com.test.StudentTest_load.main(StudentTest_load.java:21)Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) at com.demo_1.Student_$$_javassist_0.getName(Student_$$_javassist_0.java) at com.test.StudentTest_load.main(StudentTest_load.java:21)
错误原因:
Student student =(Student)session.load(Student.class, 1);
在执行这段代码的时候,在数据库中并没有执行sql语句,得到Student对象,而是在用到Student对象的时候才会执行sql语句,所以在事物提交之后就不能再执行sql语句了,所以没有得到Student对象,几报错了。这就是load()方法的特点,用到时再执行sql。
二、get方法
Configuration cfg = new AnnotationConfiguration();SessionFactory sf = cfg.configure().buildSessionFactory();Session session = sf.openSession();session.beginTransaction();Student student =(Student)session.get(Student.class, 1);session.getTransaction().commit(); System.out.println(student.getId()+""+student.getName()+""+student.getAge());session.close();
解释:不论system语句放在什么位置,都不会出错,因为在执行
Student student =(Student)session.get(Student.class, 1);
句话的时候,就执行sql语句,并得到Student类的实例对象。
0 0
- Hibernate中session.get()和session.load()方法的异同
- Hibernate中session 的get()方法和load()方法
- Hibernate中session的get和load方法的区别
- Hibernate中Session的load()和get()方法
- Hibernate Session中get()和load()方法的区别
- Hibernate中Session的load()和get()方法
- Hibernate中Session的get()和load()方法
- hibernate 中 session的get 和load方法比较
- hibernate中session的load和get方法
- Hibernate中Session的load()和get()方法
- hibernate session的get和load方法
- Hibernate中Session的get和load
- Hibernate中Session的get和load
- Hibernate中Session的get和load
- Hibernate中Session的get和load
- Hibernate session.get()和session.load()方法的区别
- 在hibernate中session.load和session.get的不同
- Hibernate中session.get和session.load的区别
- SSL常用专业缩略语汇总
- 如何确定本次编译的deconfig文件
- js获取项目路径
- 网络相关系列之四:数据解析之SAX方式解析XML数据
- 将已有项目提交到github/从github上pull到本地
- hibernate中session的load和get方法
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
- 欢迎使用CSDN-markdown编辑器
- 树莓派h264实时视频监控
- 数据中显示"刚刚、几天前、几天前、几个月"等个人的想法
- android - 下拉刷新 & 强制刷新notifyDataSetChanged
- PCL RANSAC代码阅读
- iOS多线程总结
- Java中的ThreadLocal深入理解