【问题标题】:What is the difference between annotating EntityManager with @Autowired and @PersistenceContext? Which one should be preferred?使用 @Autowired 和 @PersistenceContext 注释 EntityManager 有什么区别?应该首选哪一个?
【发布时间】:2019-10-14 06:03:06
【问题描述】:

我正在使用spring-boot-starter-data-jpa 开发一个 Spring-Boot 应用程序。我无法理解应该使用哪个注解来注入 EntityManager? @Autowired@PersistenceContext

我知道 @PersistenceContext 是 JPA 注释,而 @Autowired 属于 Spring。但在内部,它们如何发挥作用? 我已经看过this。但无法理解具体原因。

【问题讨论】:

标签: spring-boot jpa spring-data-jpa


【解决方案1】:

数据源是数据的来源。例如,这可能是一个数据库。

如果您需要多个数据源,一个选择是在 persistence.xml 文件中定义它们。在这里您可以定义多个并按名称分隔它们。

@PersistenceContext 然后会给你更细粒度的你想要注入的东西。在这里,您可以通过定义的名称选择哪个数据源。还有一些其他的选择。 https://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceContext.html

如果使用@Autowire,您只是通过 bean 名称注入可用的持久性上下文。如果您有 2 个或更多持久性上下文,这可能会因为歧义而失败。

【讨论】:

猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 2015-09-28
  • 2012-01-16
  • 2012-02-15
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多