Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SessionFactory.getCurrentSession()是否线程安全?_Java_Multithreading_Hibernate_Servlets - Fatal编程技术网

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()
依次通过static
factory.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符号。