Java SessionFactory.getCurrentSession()是否线程安全?
通过Java SessionFactory.getCurrentSession()是否线程安全?,java,multithreading,hibernate,servlets,Java,Multithreading,Hibernate,Servlets,通过SessionFactory.getCurrentSession()获取Hibernate会话是否线程安全? 假设我有一个静态SessionFactory对象用于我的整个应用程序,我有5个并发请求被发送到我的servlet。我的servlet为每个请求调用方法Auth.checkLogin(),然后Auth.checkLogin()依次通过staticfactory.getCurrentSession()获取会话 在对我的servlet的每个请求结束时,在先前获得的会话上调用transact
SessionFactory.getCurrentSession()
获取Hibernate会话是否线程安全?
假设我有一个静态SessionFactory
对象用于我的整个应用程序,我有5个并发请求被发送到我的servlet。我的servlet为每个请求调用方法Auth.checkLogin()
,然后Auth.checkLogin()
依次通过staticfactory.getCurrentSession()获取会话
在对我的servlet的每个请求结束时,在先前获得的会话上调用transaction.commit()
我的问题是,这是线程安全的方法吗?或者我应该做些改变吗?是的。是不可变的,因此是线程安全的。来自Hibernate 4.0
这里的主要约定是创建会话实例通常
应用程序只有一个SessionFactory实例和线程
服务客户端请求从此工厂获取会话实例
会话工厂的内部状态是不可变的。一旦是
此内部状态已设置。这种内部状态包括所有
关于对象/关系映射的元数据
实现者必须是线程安全的。
那么
通过获取Hibernate会话是否线程安全
SessionFactory.getCurrentSession()
api说是的。我还将hibernate.current\u session\u context\u class
设置为thread
@ClickUpvote阅读有关current\u session\u context\u class
的更多信息,我单击了upvote符号。