从Spring Data JPA访问EntityManager

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 {@Id@Column(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;@Override@Transactionalpublic 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOIP模拟测试11「string·matrix·big」

打的big出了点小问题,maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像,但我没做序列,考场回忆学长讲课,打不出来。最后我口胡了一个CDQ分治&…

监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?

原标题:监控摄像机怎么维护和保养?在安防监控系统中,起决定作用的是显示器、摄像机和储存设备。那么,问题来了,监控摄像机怎么维护和保养呢?摄像机属于精密家电,使用上也应更加注意。1、注意防潮:潮湿是摄…

Promise 学习心得

当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise, Promise 有什么用?在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱,Promise 这个东西就是为了解决回调嵌套而生的 Promise 是异步编程的一…

小米羊城通余额不足服务器维护,再不怕羊城通余额不够了!地铁站现自助补票“神器”...

再不怕羊城通余额不够了!地铁站现自助补票“神器”金羊网 作者:陈泽云 2018-04-16金羊网讯 记者陈泽云报道你有没遇到过这样情况,准备出地铁站时,却发现羊城通余额不足刷不出闸、或者闸机读取不到你的进站信息,只能去…

flex 组建重写

flex历经几个版本的变化,其封装性也越来越规范。 今日flex的学习,总结是组件的重写。 项目中为使组件的针对性,易用性更强 ,免不了要重写组件。 要改变你的对手你的了解你的对手。 一个组件从被new到渲染出来主要经历几个重要事件…

glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器

glassfish发布应用最近,大概在去年年底, GlassFish开源团队发布了GlassFish 4.0 beta 72作为升级版 。 阿伦古普塔(Arun Gupta)在他的博客上发布了有关GlassFish 4 .0 beta 72的Maven坐标的文章。 该版本意义重大,因为…

Zend Framework 多模块配置 (二)

续 Zend Framework 多模块配置 (一) 4)启动bootstrap文件: 全局bootstrap文件 (repos/application/botstrap.php) class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {/***加载一…

固定速率与固定延迟– RxJava常见问题解答

如果您使用的是纯Java,从版本5开始,我们有一个方便的调度程序类,该类允许以固定速率或固定延迟运行任务: import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService;ScheduledExecutorServ…

cpta 好像有漏洞

https://kwt.cpta.com.cn/转载于:https://www.cnblogs.com/heikeboys/p/7173543.html

通过Spring Boot使用MySQL JDBC驱动程序

在本文中,我将向您展示如何将MySQL数据库与Spring Boot应用程序连接。 本文使用的工具包括: Spring Boot 1.5.6版本 MySQL 5.7.X 马文 Java 8 Spring Data JPA 1 –项目结构 项目结构是典型的Maven结构。 2 –项目依赖性 请注意,父母…

如何开启O2优化

O2环境会使你的程序跑的特别快,然而大多数正式考试都不能开O2 然而平时做有些题强制开O2,会出现在本机运行正确,但是交上去RE的情况,这时你就要开O2了. 例如在本机运行时会有下标为-但可以运行,而O2你就会RE 那么如何开呢 类似这样 #include<bits/stdc.h> using namespac…

数颜色

此数颜色非彼数颜色, 彼者带修莫队,主席树,树套树,分块,权值线段树皆可A之 而此者带修莫队,树套树,分块皆不可A之 此者异常之简单也,而数据异常之傻逼也,卡我分块者也,卡我权值线段树者也 从11.00即开始卡常,然而不让我过 对于分块 使用register inline fread 展开 不写函数 二…

jax-ws cxf_走向REST:将Tomcat嵌入Spring和JAX-RS(Apache CXF)

jax-ws cxf这篇文章是上一篇文章的逻辑延续。 唯一的区别是我们将使用的容器&#xff1a;它将是我们的老兄Apache Tomcat而不是Jetty 。 令人惊讶的是&#xff0c;嵌入最新的Apache Tomcat 7非常容易&#xff0c;因此现在让我展示一下。 我不会重复完整的上一篇文章 &#xff0…

深入理解C指针第一章小结1

1.1 指针和内存&#xff0c;C程序在编译后&#xff0c;会以三种形式使用内存。 (1) 静态/全局内存&#xff1a;在程序开始时分配&#xff0c;程序结束才消失&#xff0c;所有函数都能访问全局变量&#xff0c;static静态变量的作用域局限在定义它们的函数内部 (2)自动内存&…

WSO2注册表安装简介

这篇文章基于有关注册表安装及其工作方式等常见问题。以下是人们提出的主要问题&#xff1a; 1&#xff09;。 安装如何工作&#xff1f; 2&#xff09;。 Config Registry和Governance Registry有什么区别&#xff1f; 3&#xff09;。 可以将H2以外的数据库用于本地注册表…

[Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

运用PyTorch动手搭建一个共享单车预测器

本文摘自 《深度学习原理与PyTorch实战》 我们将从预测某地的共享单车数量这个实际问题出发&#xff0c;带领读者走进神经网络的殿堂&#xff0c;运用PyTorch动手搭建一个共享单车预测器&#xff0c;在实战过程中掌握神经元、神经网络、激活函数、机器学习等基本概念&#xff0…

jax-rs jax-ws_通过JAX-WS Provider在Web服务中利用MOXy

jax-rs jax-ws在以前的文章中&#xff0c;我演示了如何将EclipseLink JAXB&#xff08;MOXy&#xff09;直接集成到WebLogic&#xff08;从12.1.1开始&#xff09;和GlassFish&#xff08;从3.1.2开始&#xff09;的JAX-WS实现中 。 在本文中&#xff0c;我将演示如何通过使用J…

3个经常被忽略的APM关键功能

APM核心功能已不再足够。 市场领先的应用超越了以往&#xff0c;设置了其他人必须匹配的新标准。 每当任何针对消费者或企业的Web应用程序达到新的性能峰值时&#xff0c;都会为用户期望值设定基准。 这可能不公平或不合理&#xff0c;但这就是市场运作的方式。 当某人出于个…

NOIP模拟测试13「矩阵游戏·跳房子·优美序列」

矩阵游戏 考试时思路一度和正解一样&#xff0c;考试到最后还是打了80分思路&#xff0c;结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值&#xff0c;每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点*行增倍的数量就行了 for(ll i1;i<n;i…