• openSession 与 getCurrentSession的区别


    openSession 与 getCurrentSession的区别

     

    1、openSession 每一次获得的是一个全新的session对象,而getCurrentSession获得的是与当前线程绑定的session对象

    1. package cn.kiwifly.view;  
    2.   
    3. import org.hibernate.SessionFactory;  
    4. import org.hibernate.cfg.Configuration;  
    5. import org.hibernate.classic.Session;  
    6.   
    7. import cn.kiwifly.util.MySessionFactory;  
    8.   
    9. public class View {  
    10.   
    11.     public static void main(String[] args) {  
    12.   
    13.         Configuration configuration = new Configuration().configure();  
    14.         SessionFactory sf = configuration.buildSessionFactory();  
    15.           
    16.         Session sessionOpen1 = sf.openSession();  
    17.         Session sessionOpen2 = sf.openSession();  
    18.           
    19.         Session sessionThread1 = sf.getCurrentSession();  
    20.         Session sessionThread2 = sf.getCurrentSession();  
    21.           
    22.         System.out.println(sessionOpen1.hashCode() + "<-------->" + sessionOpen2.hashCode());  
    23.         System.out.println(sessionThread1.hashCode() + "<-------->" + sessionThread2.hashCode());  
    24.           
    25.   
    26.     }  
    27.   
    28. }  

    上面代码输出结果:

    546579839<-------->1579795854
    141106670<-------->141106670

    2、openSession不需要配置,而getCurrentSession需要配置

    1中代码如果直接运行会报错,要在hibernate.cfg.xml中加入如下代码才行

    1. <property name="current_session_context_class">thread</property>  

    这里我们是让session与当前线程绑定,这里的线程范围应该是一次浏览器的会话过程,也就是说打开网站和关闭浏览器这个时间段。

    3、openSession需要手动关闭,而getCurrentSession系统自动关闭

    openSession出来的session要通过:

    1. session.close();  
    而getSessionCurrent出来的session系统自动关闭,如果自己关闭会报错

    4、Session是线程不同步的,要保证线程安全就要使用getCurrentSession

  • 相关阅读:
    ENVI数据格式
    旋转卡壳模板
    旋转卡壳求两个凸包最近距离poj3608
    树状数组模板
    输入输出挂
    Catalan数以及使用Raney引理证明
    【转】AC神组合数取模大全
    单向HASH——MurmurHash
    hdu4063(圆与圆交+线段与圆交+最短路)
    字符串HASH模板
  • 原文地址:https://www.cnblogs.com/weizhxa/p/10147313.html
Copyright © 2020-2023  润新知