Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Multithreading 在每请求会话模式的实现中,您对每次thred执行中清除持久性上下文有何看法?_Multithreading_Jpa_Persistence - Fatal编程技术网

Multithreading 在每请求会话模式的实现中,您对每次thred执行中清除持久性上下文有何看法?

Multithreading 在每请求会话模式的实现中,您对每次thred执行中清除持久性上下文有何看法?,multithreading,jpa,persistence,Multithreading,Jpa,Persistence,当您使用JPA并实现每请求会话模式(线程意义上的作用域事务)时,是否经常需要在每个事务的结尾清除持久性上下文? 在我的例子中,之所以这样做是因为我将创建的实体管理器保存在ThreadLocal的实例中,所以当我为每个线程使用一个相同的EntityManager实例时。但有时,当用户执行新请求时,ThreadLocal会返回一个旧的持久性容器,其中包含旧的持久性数据。 您认为我的解决方案在考虑可伸缩性和性能方面的非功能性需求时是合理的吗 提前谢谢各位, 致以最良好的祝愿, Simeon如果在新请求

当您使用JPA并实现每请求会话模式(线程意义上的作用域事务)时,是否经常需要在每个事务的结尾清除持久性上下文? 在我的例子中,之所以这样做是因为我将创建的实体管理器保存在ThreadLocal的实例中,所以当我为每个线程使用一个相同的EntityManager实例时。但有时,当用户执行新请求时,ThreadLocal会返回一个旧的持久性容器,其中包含旧的持久性数据。 您认为我的解决方案在考虑可伸缩性和性能方面的非功能性需求时是合理的吗

提前谢谢各位, 致以最良好的祝愿,
Simeon

如果在新请求中存在过时的持久性上下文,则错误地实现了每个请求的会话模式

当请求处理结束时,您需要关闭
EntityManager
,并将其从
ThreadLocal
中删除。如果这样做,则不需要调用
clear()
(实际需要的情况除外,例如,对于大规模批处理操作)