Cos*_*sii 46 spring jpa entitymanager
有什么区别:
@Autowired
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
与:
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
这两个选项都适用于我的应用程序,但是我可以通过使用 @Autowired注释来解决问题吗?
Ale*_*lex 32
你不应该使用@Autowired.
@PersistenceContext注意为每个线程创建一个唯一的 EntityManager。在生产应用程序中,您可以让多个客户端同时调用您的应用程序。对于每次调用,应用程序都会创建一个线程。每个线程都应该使用自己的 EntityManager。想象一下,如果他们共享同一个 EntityManager 会发生什么:不同的用户将访问相同的实体。
usually the EntityManager or Session are bound to the thread (implemented as a ThreadLocal variable).
Run Code Online (Sandbox Code Playgroud)
来源:https : //stackoverflow.com/a/42074452/2623162
EntityManager instances are not thread-safe.
Run Code Online (Sandbox Code Playgroud)
来源:https : //docs.oracle.com/cd/E19798-01/821-1841/bnbqy/index.html
请注意,@PersistenceContext注解来自javax.persistence包,而不是来自 spring 框架。在 JavaEE 中,它被 JavaEE 容器(也称为应用服务器)用来注入 EntityManager。Spring 借用 PersistenceContext 注释来做同样的事情:为每个线程注入一个应用程序管理的(= 不是容器管理的)EntityManager bean,就像 JavaEE 容器所做的那样。
sas*_*_bg 23
@PersistenceContext允许您指定要使用的持久性单元.您的项目可能有多个数据源连接到不同的数据源,并@PersistenceContext允许您说出您要操作的数据源
请查看此处的说明:http: //www.coderanch.com/t/481448/java-EJB-SCBCD/certification/unitName-PersistenceContext
| 归档时间: |
|
| 查看次数: |
40816 次 |
| 最近记录: |