1.openSession和getCurrentSession的区别?

  *openSession必须关闭,currentSession在事务结束后自动关闭

  *openSession没有和当前线程绑定,currentSession和当前线程绑定

2.如果使用currentSession需要在hibernate.cfg.xml文件中进行配置:

  *如果是本地事务(jdbc事务)

    <propertyname="hibernate.current_session_context_class">thread</property>

  *如果是全局事务(jta事务)

  <propertyname="hibernate.current_session_context_class">jta</property>

全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用XA 二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。

本地事务:在单个 EIS或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。