博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate getCurrentSession()和openSession()的区别
阅读量:6007 次
发布时间:2019-06-20

本文共 2020 字,大约阅读时间需要 6 分钟。

  1. 通过getCurrentSession()创建的Session会绑定到当前线程上;openSession()不会。
  2. 通过getCurrentSession()获取Session,首先是从当前上下文中寻找旧的Session,如果没有,则创建新的Session;而openSession()是每次都创建新的Session。
  3. getCurrentSession()创建的Session在事物提交时自动关闭;openSession()创建的Session需要手动关闭。
    1     @Test 2     public void testTeacherSave() { 3      4         Teacher t = new Teacher(); 5          6         t.setName("t1"); 7         t.setTitle("middle"); 8         t.setBirthDate(new Date()); 9         10         Session session = sessionFactory.openSession();11         //Session session = sessionFactory.getCurrentSession();12         13         session.beginTransaction();14         session.save(t);15         16         Session session2 = sessionFactory.getCurrentSession();17         18         System.out.println(session == session2);19         20         session.getTransaction().commit();21         22         Session session3 = sessionFactory.getCurrentSession();23         24         System.out.println(session == session3);25         26     }

    输出:Hibernate:

        insert
        into
            Teacher
            (birthDate, gender, good, name, title)
        values
            (?, ?, ?, ?, ?)
    false
    false

    1 @Test 2     public void testTeacherSave() { 3      4         Teacher t = new Teacher(); 5          6         t.setName("t1"); 7         t.setTitle("middle"); 8         t.setBirthDate(new Date()); 9         10         //Session session = sessionFactory.openSession();11         Session session = sessionFactory.getCurrentSession();12         13         session.beginTransaction();14         session.save(t);15         16         Session session2 = sessionFactory.getCurrentSession();17         18         System.out.println(session == session2);19         20         session.getTransaction().commit();21         22         Session session3 = sessionFactory.getCurrentSession();23         24         System.out.println(session == session3);25         26     }

    输出:Hibernate:

        insert
        into
            Teacher
            (birthDate, gender, good, name, title)
        values
            (?, ?, ?, ?, ?)
    true
    false

转载于:https://www.cnblogs.com/ming-zi/p/5937961.html

你可能感兴趣的文章
golang编译库文件方式
查看>>
一道笔试题:捞鱼问题
查看>>
SUSE的SSHD配置及设置防火墙
查看>>
jQuery实现右上角点击后滑下来的竖向菜单
查看>>
信息加密之消息摘要算法的SHA
查看>>
GNU Gettext
查看>>
[na]tftp从linux下载文件
查看>>
Web应用程序指纹识别工具BlindElephant
查看>>
2014第11周六
查看>>
空降兵如何管理团队?
查看>>
关于公用标题头的问题(用变量代替)
查看>>
卡卡游戏引擎之快速入门
查看>>
根据实际情况来选择出行方式
查看>>
阿里巴巴首次公开深度学习框架 X-Deep Learning
查看>>
假期连续熬夜!如何让视力始终如一?
查看>>
107岁的奶奶依然精神矍铄,东哥说“奶奶你很靓”
查看>>
坪效是传统超市的5倍以上!京东首家线下生鲜超市7FRESH开业
查看>>
饿了么和口碑收到超30亿美元投资承诺
查看>>
李彦宏:若谷歌重返中国 百度正好真刀真枪PK再赢一次
查看>>
登陆成功率99% 云知声携手平安好医生推声纹登录系统
查看>>