19.session产生方式

业务场景:如何保持service调用多个dao时,统一事务。

session的产生方式

不考虑分布式环境

分布式调用

不同java虚拟机直接的对象调用

1.sessionFactory.openSession() 每次创建新session

             

2.sessionFactory.getCurrentSession();

1)查看当前线程中的session是否存在

如果存在,从当前线程中取出session

如果不存在,创建一个session,并把这个session放到threadlocal中,用户从threadlocal中取出session

 

2session.getCurrentSession的用法

  1、在hibernate的配置文件中:

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

  2、不需要写session.close方法,在事务提交的时候会自动关闭(hibernate内部完成)

  3crud都需要事务

      1、因为是一个线程,所以整个方法中一个session,一个事务

      2、保证了整个业务操作的安全性