`

hibernate session的load方法和get方法

 
阅读更多
public void test() { 
          
        Teacher teacher1=new Teacher(); 
        Teacher teacher2=new Teacher(); 
          
        //有异常的load 
        /* 
        Session session=sessionFactory.getCurrentSession(); 
        session.beginTransaction(); 
        teacher1=(Teacher)session.load(Teacher.class,9); 
        session.getTransaction().commit(); 
        System.out.println(teacher1.getName()); 
        */
          
        //没有异常的load 
        Session session=sessionFactory.getCurrentSession(); 
        session.beginTransaction(); 
        teacher1=(Teacher)session.load(Teacher.class,9); 
        //这里重点,因为调用getName(),所以load方法才去读取数据库 
        System.out.println(teacher1.getName());  
        session.getTransaction().commit(); 
        System.out.println(teacher1.getName());      
          
      
        session=sessionFactory.getCurrentSession(); 
        session.beginTransaction(); 
        teacher2=(Teacher)session.get(Teacher.class,10); 
        session.getTransaction().commit(); 
        System.out.println(teacher2.getName()); 
          
  
    }

 

 总结:

  1 get方法是直接访问了数据库,当没有相应数据则返回null
  2 load方法是延迟加载,返回的是一个代理,当有调用到对象的相关方法时才访问数据库,如果没有相应数据则异常
  3 load方法得到的对象必须在session关闭前使用到,不然再访问就异常,因为它的不访问数据库了

最后记住:
  1) load延迟加载在session关闭必须先使用,不然后面就不能使用
  2) 当没有相应数据时,get返回null,load则异常

分享到:
评论

相关推荐

    hibernate get load区别

    get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库

    Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别

    Hibernate Session中的 flush方法的作用 get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org....

    Hibernate中Session.get()方法和load()方法的详细比较

    今天小编就为大家分享一篇关于Hibernate中Session.get()方法和load()方法的详细比较,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Hibernate中get()和load()的区别.docx

    Hibernate中根据Id单条查询获取对象的方式有两种,分别是get()和load(),来看一下这两种方式的区别。 1. get() 使用get()来根据ID进行单条查询: User user=session.get(User.class, "1"); 当get()方法被调用的时候...

    hibernate操作数据库笔记

    //该方法将到classpath下解析hibernate.cfg.xml中的配置,如果不用Hibernate默认的配置文件名和路径,可在该方法中指定Hibernate配置文件的名称和路径 2.用Configuration对象获取SessionFactory和Session对象:...

    hibernate基础教程

    2、load()方法 3、批量存储:session.flush()和session.clear() 二 Hibernate中的二级缓存结构 在Hibernate中使用两极缓存结构,第一级缓存是Session级别的缓存,...

    hibernated的线程同步问题

    hibernate数据的并发控制,及hibernate中的session.get()与session.load()方法异同

    Spring + Hibernate + Struts

    比如说hibernate,我问一个同学session接口的get和load方法有何异同,这位同学含糊了半天没答上来,连这两个方法干什么的都不知道,你是怎么把代码写出来的。问另一个精通struts的同学,HttpServletRequest的...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate...

    传智播客李勇hibernate源码1-20课

    04_Session接口及get|load|persist方法 05_实体对象的三种状态与saveOrUpdate方法 06_完善HibernateUtil类及hql查询入门 07_实体类或属性名与数据库关键字冲突问题 10_使用Hibernate完成CRUD实验的步骤说明 11_...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     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 ...

    Hibernate 查询方式总结

    1. get() and load() Java代码 session.get(Clazz, id); session.load(Clazz, id); session.get(Clazz, id); session.load(Clazz, id); 说明: load()与get()的区别 请注意如果没有匹配的数据库记录,load()方法可能...

    Hibernate面试题分析_尚硅谷_佟刚

    1. Hibernate 的检索方式有哪些 ? 2. 在 Hibernate 中 Java 对象的状态有哪些 ? 3. Session的清理和清空有什么区别? 4. load()和get()的区别 5. hibernate 优缺点......

    精通Hibernate:对象持久化技术第二版part3

    8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate...

    hibernate 3中的缓存小结

    当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     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 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     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 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     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 ...

    ssh(structs,spring,hibernate)框架中的上传下载

    HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute(HibernateCallback action),load(Class entityClass, Serializable id),save(final ...

Global site tag (gtag.js) - Google Analytics