JPA中为什么EntityManager 的注解要用@PersistenceContext

在使用SpringJPA的时候,看到如下代码

 @PersistenceContextprivate EntityManager entityManager;

于是就有些好奇,这个@PersistenceContext是几个意思,如果是实体注入的话,统一采用

@Autowired可以吗?于是上网查了下,几乎所有的EntityManager都是采用这个注解的,就去找了找原因。

根据上面的描述,总结如下:

  1. @PersistenceContext是jpa专有的注解,而@Autowired是spring自带的注释
  2. EntityManager不是线程安全的,当多个请求进来的时候,spring会创建多个线程,@PersistenceContext就是用来为每个线程创建一个EntityManager的,而@Autowired只创建了一个,为所有线程共用,有可能报错
  3. 在使用EntityManager的时,请采用@PersistenceContext进行注解,而不要使用@Autowired

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部