繁体   English   中英

Spring boot Persistence Context注解

[英]Spring boot Persistence Context annotation

我是 Spring Boot 的新手,并尝试在 Spring Boot 中创建一个基本的 REST 示例。 我正在从Spring Boot REST 示例网站获取帮助来创建一个基本示例。

大多数事情对我来说都很清楚,但我坚持使用一个注释,该注释用于使用以下代码从数据库中获取数据

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实际上是如何工作的 - 谁能解释一下?

示例中,他们解释了使用 @PersistenceContext 背后的概念:

@PersistenceContext – 我们需要了解如何使用简单的注解@PersistenceContext 和它是什么来连接数据库。

  1. 实体由 javax.persistence.EntityManager 实例使用持久化上下文管理。
  2. 每个 EntityManager 实例都与一个持久化上下文相关联。
  3. 在持久性上下文中,管理实体实例及其生命周期。
  4. 持久化上下文定义了一个范围,在该范围内创建、持久化和删除特定实体实例。
  5. 一个持久化上下文就像一个包含一组持久化实体的缓存,所以一旦事务完成,所有的持久化对象都会从 EntityManager 的持久化上下文中分离出来,不再被管理。

@PersistenceContext 是 JPA 标准注释,它使您可以更好地控制要注入的持久性上下文。

代码中的@PersistenceContext注释用于指示EntityManager必须自动注入,换句话说,它的生命周期将由运行应用程序的容器管理(这是一件好事)。 另一种选择是通过不同的选项由您提供所有必需的配置(应用程序管理),所有这些配置都很麻烦(配置文件或 bean),并且冒着将您的应用程序绑定到某些特定于环境的配置的风险(这是一件坏事)。

我的答案是在好几年之后出现的,但这里是。

这个注解@PersistentContext与你的应用程序上下文中定义的另一个 bean 一起工作:

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

两者一起工作的方式是PersistenceAnnotationBeanPostProcessor将查找适当的 EntityManagerFactory 以注入实体管理器,其中我们@PersistenceContext注释的属性

我的理解是基于对这个问题的回答: 所以在这里提问

简而言之,这是一个使用实体管理器管理实体的空间(只是说)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM