我是Spring Boot的新手,并尝试在Spring启动时创建一个基本的REST示例。我正在从Spring Boot REST example网站获取帮助,以创建一个基本示例。
我对大多数事情都很清楚,但我仍然坚持使用一个注释,该注释用于从数据库中获取数据,代码如下所示
package com.springbootrest.repository;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;
import org.springframework.stereotype.Repository;
import com.springbootrest.model.BookDetails;
@Transactional
@Repository
public class BookDetailsRepoImpl implements BookDetailsRepo {
@PersistenceContext
private EntityManager entityManager;
public List<BookDetails> listBookDetails() {
return (List<BookDetails>) entityManager.createQuery("FROM BookDetails").getResultList();
}
}
我不明白这个@PersistenceContext是如何工作的。
任何人都可以解释一下这里发生了什么。
答案 0 :(得分:2)
在example本身,他们已经解释了使用@PersistenceContext背后的概念:
@PersistenceContext - 我们需要了解我们如何使用简单的注释@PersistenceContext连接数据库以及它是什么。
答案 1 :(得分:1)
@PersistenceContext是JPA标准注释,它使您可以更好地控制要注入的持久性上下文。
答案 2 :(得分:0)
简而言之,这是使用Entity管理实体的空间(可以这么说) 经理。
答案 3 :(得分:0)
您代码中的 @PersistenceContext 注释用于指示必须自动注入 EntityManager ,换句话说,其生命周期将由容器来运行您的应用程序(这是一件好事)。另一个选择是通过不同的选项让您(应用程序托管)提供所有必需的配置,这些选项都很繁琐(配置文件或Bean),并且存在将应用程序绑定到某些特定于环境的风险配置(这是一件坏事)。
答案 4 :(得分:0)
几年后我的回答就来了,可是。
此注释@PersistentContext
与在您的应用程序上下文中定义的另一个bean结合使用:
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
两者一起工作的方式是PersistenceAnnotationBeanPostProcessor
将查找适当的EntityManagerFactory来注入实体管理器,在该实体管理器中我们具有用@PersistenceContext
注释的属性
我的理解基于以下问题的答案:so question here