和一起做网店类似的网站,定制开发小程序,房产网站排行,邯郸网站制Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层。 有时#xff0c;您需要从Spring Data JPA访问EntityManager。 这篇文章向您展示了如何访问EntityManager。 实体管理器 EntityManager的目的是与持久性上下文进行交互。 然后#xff0c;持久性上下文将管… Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层。 有时您需要从Spring Data JPA访问EntityManager。 这篇文章向您展示了如何访问EntityManager。 实体管理器 EntityManager的目的是与持久性上下文进行交互。 然后持久性上下文将管理实体实例及其关联的生命周期。 我的有关JPA实体生命周期的博客文章对此进行了介绍。 Spring Data JPA出色地完成了工作并通过其Repository接口将您从EntityManager中抽象出来– 资料库 Crud存储库 JPAR存储库 但是有时您需要访问EntityManager。 EntityManager.refresh 刷新方法就是一个例子。 refresh方法从数据库刷新实例的状态并覆盖EntityManager持有的副本。 这可确保EntityManager管理器具有最新的数据版本 Spring Data JPA示例 让我们从正常的测试环境中使用JPA对象- Entity
Table(name PARKRUNCOURSE)
public class ParkrunCourse {IdColumn(name PRCOURSE_ID)GeneratedValueprivate Long courseId;Column(name COURSENAME)private String courseName;Column(name URL)private String url;Column(name AVERAGETIME)private Long averageTime;
} 及其相关的资料库– public interface ParkrunCourseRepository extends CrudRepository {} 这是Spring存储库的标准实现其中CrudRepository采用ParkrunCourse其键类型为Long 创建自定义接口和放大 第一步是定义一个与我们要访问的基础EntityManager方法具有相同签名的新接口– public interface ParkrunCourseRepositoryCustom {void refresh(ParkrunCourse parkrunCourse);
} 关键是自定义实现必须以“ Custom”结尾除非在Spring Data配置中被覆盖。 接下来我们提供此接口的实现并注入EntityManager – import javax.persistence.PersistenceContext;
import javax.persistence.EntityManager;
import com.glenware.springboot.form.ParkrunCourse;
import org.springframework.transaction.annotation.Transactional;
public class ParkrunCourseRepositoryImpl implements ParkrunCourseRepositoryCustom {PersistenceContextprivate EntityManager em;OverrideTransactionalpublic void refresh(ParkrunCourse parkrunCourse) {em.refresh(parkrunCourse);}
} 我们必须以“ Impl”结尾我们的实现名称 然后我们将ParkrunCourseRepository接口更改为– public interface ParkrunCourseRepository extends CrudRepository, ParkrunCourseRepositoryCustom {
} 然后我们可以刷新我们的JPA对象- Autowired
private ParkrunCourseRepository parkrunCourseRepository;
ParkrunCourse parkrunCourse parkrunCourseRepository.findOne(1L);
// Do some work in the mean time the database has been updated by a batch job
// refresh object and now up to date
parkrunCourseRepository.refresh(parkrunCourse);结论 这种方法展示了如何使用Spring Data JPA访问EntityManager。 这种方法的优点是您可以访问EntityManager以获得特定的JPA实现。 这种方法的缺点是您需要为每个JPA实现重复执行此任务。 下一篇文章介绍了用于自定义存储库实现的更通用方法使其他JPA对象受益。 翻译自: https://www.javacodegeeks.com/2017/10/access-entitymanager-spring-data-jpa.html