SessionFactory.getCurrentSession()线程安全吗?

时间:2014-02-26 02:24:00

标签: java multithreading hibernate servlets

通过SessionFactory.getCurrentSession()获取Hibernate会话是否安全? 假设我有一个static SessionFactory对象用于我的整个应用程序,我有5个并发请求发送到我的servlet。我的servlet为每个请求调用方法Auth.checkLogin()Auth.checkLogin()依次通过静态factory.getCurrentSession()获取会话。

在我的servlet的每个请求结束时,transaction.commit()上的session被调用。

我的问题是,这是一种线程安全的方法吗?或者我应该做出任何改变吗?

2 个答案:

答案 0 :(得分:1)

是。 SessionFactory是不可变的,因此线程安全。

答案 1 :(得分:1)

来自Hibernate 4.0 SessionFactory

  

这里的主要合同是创建Session实例。的一般   应用程序具有单个SessionFactory实例和线程   服务客户端请求从该工厂获取Session实例。

     

SessionFactory的内部状态是不可变的。一旦它   创建此内部状态已设置。这个内部状态包括所有   关于对象/关系映射的元数据。

     

实施者必须是线程安全的。

那么

  

通过线程获取Hibernate会话是否安全   SessionFactory.getCurrentSession()?

对于api说什么,然后是。