Java EE 7之前版本替代JPA 2.1的非同步持久性上下文

Java EE 7中的非同步持久性上下文

JPA 2.1引入了非同步持久性上下文的概念,该概念允许对JPA实体管理器的刷新进行细粒度控制,即通过显式调用EntityManager#joinTransaction 。 以前,这默认情况下是JTA事务的结束,例如,在典型的Stateless EJB中,实体管理器会在方法结束时(默认情况下开始和结束事务)将其状态刷新到DB。 您可以在这里和这里阅读有关此内容的更多信息。

在Java EE 7之前的时代(EE 5和EE 6)也有可能

可以对Java EE 5和6进行调整,以实现与Java EE 7中的非同步持久性上下文所获得的结果相同的结果。

想象一个用例,其中按顺序(使用流程之类的向导)来编辑客户详细信息,例如屏幕1中的地址信息,屏幕2中的联系信息等。您希望在客户输入是,但不希望将整个状态推送到数据库,直到该过程完成,即用户输入了所有类别的信息

package com.abhirockzz.conversationalee;import com.abhirockzz.conversationalee.entity.Customer;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;@Stateful
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class CustomerEditorFacade{@PersistenceContext(type = PersistenceContextType.EXTENDED)EntityManager em;@Inject //this won't work in Java EE 5Principal authenticatedUser;private Customer customer;@PostConstructpublic void init(){System.out.println("CustomerEditorFacade created at " + new Date().toString());   }@PreDestroypublic void destroy(){System.out.println("CustomerEditorFacade destroyed at " + new Date().toString());   }//step 1public void updateCity(String custID, String city){String custID = authenticatedUser.getName(); //assume we have an authenticated principal which is the same as the customer ID in the DatabaseCustomer customerFromDB = em.find(Customer.class, Integer.valueOf(custID)); //obtain a 'managed' entitycustomerFromDB.setCity(city); //no need to call em.persistcustomer = customerFromDB; //just switch references//Customer state will NOT be pushed to DB}//step 2public void updateEmail(String email){customer.setEmail(email); //not pushed to DB yet}@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)public void save(){//dummy method to trigger transaction and flush EM state to DB}@Removepublic void finish(){//optional method to provide a way to evict this bean once used//not required if this is session scoped}}

代码注释是自我解释(希望如此)

干杯!

翻译自: https://www.javacodegeeks.com/2015/12/pre-java-ee-7-alternative-jpa-2-1-unsynchronized-persistence-context.html

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

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

相关文章

三相同步电机怎么接线图_三相电度表怎么看倍数

电工之家:www.dgzj.com QQ群:2179090关注电工之家官方微信公众号“电工之家”,收获更多经验知识。从题主给的照片来看,这个电度表型号是DTS901-4 1.5(6)A 3X220V/380V精确度为1的1级互感器间接接线的三相四线有功电子电度表。那…

第七周进度表

所花时间 7   代码量(行) 235 博客量 2 所学知识点 了解了结队开发 转载于:https://www.cnblogs.com/muxiaozhou/p/6993180.html

中国计量大学调剂计算机技术,2020年中国计量大学硕士研究生招生调剂公告

一、调剂分数线:详见《中国计量大学2020年硕士研究生招生复试分数线》。二、调剂程序:1.第一阶段:登陆我校“研究生招生信息系统”网址https://yjsb.cjlu.edu.cn/yjszs_xsb/登记调剂信息。此信息用于复试,请务必认真准确填写。2.第…

linux msgrcv阻塞接收_linux下高并发服务器实现

在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:单进程,单线程在accept之后,就开始在这一个连接连接上…

Maven配置tomcat和jetty插件来运行项目

针对eclipse中的Run on Server有些情况下并不是那么好操作,比如配置maven下的springmvc插件,如果使用此方法运行会很容易出现组件缺少导致错误出现一大堆的问题。 那么针对这种情况,maven下的容器插件tomcat和jetty做了很好的支持。比如在mav…

使用Apache Storm和Kite SDK Morphlines的可配置ETL处理

从我担任软件工程师的第一天起,我总是听到很多方面的相同要求: “ 我们希望所有内容都可配置,我们希望在运行时更改所有内容,我们希望有一个可视化工具来应用所有这些逻辑,以便非开发人员使用和配置我们的应用程序。 …

宁夏警官学院计算机专业,宁夏警官职业学院毕业设计模板.docx

宁夏警官职业学院本科生毕业论文题目:基于人工智能的宁夏警官职业学院的论文排版系统研究姓 名: 宁夏警官职业学院论文学 号: 20185091612院 系: 宁夏警官职业学院信息学院专 业: 计算机指导教师: Megan教授…

oracle 闪回操作(flashback)

234390216 的留下学习 原文地址 http://haohaoxuexi.iteye.com/blog/1594391 Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。闪回数据库是进行时间点恢复的新方法,它能够快速将Oracle恢复到以前的时间,以…

用法与区别_生抽老抽、蚝油味极鲜,总算搞清楚区别了,用法大不同,别用错了...

生抽老抽、蚝油味极鲜,总算搞清楚区别了,用法大不同,别再用错了各位读者朋友们大家好,感谢阅读我分享的美食文章,经验和大家一起共享,今天我要和大家分享的内容是:『生抽老抽、蚝油味极鲜&#…

2011年计算机二级试题,2011年3月全国计算机二级C++考试真题

2011年3月全国计算机二级C考试真题(21)有如下程序:#includeusing namespace std;void f1(int& x,int& y) {int zx; xy; yz;}void f2(int x;int y) {int zx; xy; yz;}int main(){int x10,y26;f1(x,y);f2(x,y);cout}运行时的输出结果是A)10B)16C)26D)36(22)有…

centos yum安装_centos7上yum安装碰到的坑

估计是之前更改过这个虚机的配置,故现在正常步骤安装完yum之后,无法使用,具体表现在 执行yum makecache的时候报错,现在no module name yum结果发现,无论怎么修改 usr/bin/yum的配置文件,都无法成功解决上面…

poj 1330 Nearest Common Ancestors LCA/DFS

题目链接: http://poj.org/problem?id1330 题意: 求出两点间的最近公共祖先。 题解: 第一种: 并查集维护:http://www.cnblogs.com/procedure2012/archive/2012/01/29/2331468.html 利用并查集在每次对子树进行遍历时进行合并,因为对以x为根…

设计模式的Java 8 Lambda表达式–装饰器设计模式

Decorator模式(也称为Wrapper )允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为。 可以将其视为子类的替代方法。 我们知道子类在编译时会增加行为,并且更改会影响原始类的所有实例。 另一方面&#xff0…

计算机管理home,电脑home键是什么意思

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。以win7为例,电脑键盘上的Home键是微软Windows操作系统中具有返回功能的按键,根据Windows不同的操作环境,home键的功能也会有区别。电脑(computer&…

ie浏览器网页版进入_IE浏览器打开网页提示无法打开Internet站点的解决办法

IE浏览器打开网页时提示Internet explorer无法打开站点,这是什么问题?Internet explorer打不开网页提示无法打开站点怎么办?请看下文五种解决办法。方法一:管理加载项打开浏览器—工具—Internet选项这时会出现“Internet选项”对…

go token验证_registry v2 解析以及如何实现token验证

提到registry v2,主要改进是支持并行pull镜像,镜像层id变成唯一的,解决同一个tag可能对应多个镜像的问题等等。如果还不太了解,可以且听我细细道来。首先不得不说的是v2 新加了一个概念Digest他是基于内容进行寻址(Content-addres…

创建一个简单的 MDM server(1)

前提:已获得 APNS 证书 ,已完毕 MDM 配置描写叙述文件的制作。请參考《 MDM 证书申请流程 》一文和《配置MDM Provisioning Profile》。环境:OSX 10.9.2,JDK 1.6。Eclipse JavaEE Helois,Tomcat 7.0一、前言《THE IOS …

epic转移游戏_Epic游戏商城更改退款政策 和steam一模一样

游侠网关注我们,获得最快的游戏资讯Epic正在打造自己的数字游戏商城,一方面对开发者提供更慷慨的销售分成,另一方面对玩家提供每两个月更新一次的免费游戏。虽然Epic游戏商城中的作品数量还在起步阶段,也缺少一些关键的常用功能&a…

计算机组成原理实验三报告,计算机组成原理实验三报告

计算机组成原理实验三报告 实 验 报 告 三课 程 计算机组成原理 姓 名 学 号实验项目 存储器实验 同组姓名 学 号指导教师 专业班级 计算机科学与技术 09 实验时间 2011-6-6实验三 存储器实验一、实验目的1.掌握存储器的功能和构成。2.了解静态随机存储器…

防盗Java EE –保护您的Java EE企业应用程序

redev离我们仅有几天的路程,我受邀作了两次演讲。 其中之一是关于我最喜欢的主题:安全性和Java EE。 它旨在实现两个目标。 一方面向典型的Java EE开发人员介绍整个应用程序安全过程和主要目标。 而且还要查看有关Java EE在满足典型需求时必须提供的内容…