【发布时间】:2014-05-07 09:17:26
【问题描述】:
我正在设计一个网络应用程序。在 Web 应用程序中,事务是特定于一个线程的,因为对于每个新请求,线程池都会创建一个新线程。
在hibernate中用于共享应用程序上下文之间的会话是由threadlocal会话上下文管理的。我是 JPA 的新手,我正在使用 @PersistentContext 在应用程序中注入持久上下文。是线程本地的吗?
【问题讨论】:
我正在设计一个网络应用程序。在 Web 应用程序中,事务是特定于一个线程的,因为对于每个新请求,线程池都会创建一个新线程。
在hibernate中用于共享应用程序上下文之间的会话是由threadlocal会话上下文管理的。我是 JPA 的新手,我正在使用 @PersistentContext 在应用程序中注入持久上下文。是线程本地的吗?
【问题讨论】:
不,JPA EntityManager 不是线程本地的。它也不是线程安全的,所以你不应该在线程之间共享一个实例。
通常,这不是问题,因为EntityManager 不会在方法调用中传递。 Beans 依赖容器注入适当的EntityManager。
【讨论】: