hibernate一级缓存session之get和load的区别

来源:互联网 发布:松下网络摄像机默认ip 编辑:程序博客网 时间:2024/05/20 10:52

 

 

 

@Test

    public void r(){

         session = getSession();

     Transaction tr = session.beginTransaction();

     /**

      * User user = (User) session.get(User.class,7);---首先从session缓存中找有没有id7user对象

      * 因为没有所以

      * tr.commit();提交后就会发送sql语句将id7的记录查出来生成一个user对象

      * 因此在执行user时不会报错

      * */

     // User user = (User)session.get(User.class, 7);

     /**

      * User user = (User) session.load(User.class,8);--首先从session缓存中找有没有id8user对象

      * 因为没有所以

      * tr.commit();提交后不会发送sql只会一个带id=8user代理对象,如图

      * 执行user时因为除了要用id属性,还要用其它的属性,正常情况下此时会发送sql去数据库查id8的记录,但因为此时session已经关闭,所以会报请如图:

      *

      * */

       User user = (User) session.load(User.class, 9);

     tr.commit();

     closeStream(sessionFactory,session);//关闭sessionFactory,session资源

     System.out.println(user);

    }