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

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

  1. 1.0jpa 2.0_Java EE 7之前版本替代JPA 2.1非同步持久性上下文

    1.0jpa 2.0 Java EE 7中的非同步持久性上下文 JPA 2.1引入了非同步持久性上下文的概念,该概念允许对JPA实体管理器的刷新进行细粒度控制,即通过显式调用EntityManager ...

  2. 为什么我会在2012年的新企业Java项目中使用Java EE而不是Spring

    这个问题经常出现. 我的新项目也在2011年11月发布. 在这个新的Enterprise Java项目中,我将使用Java EE(JEE)代替Spring框架. 我知道:关于此主题的文章,博客和论坛讨 ...

  3. java ee 值范围_一篇文章带你读懂: Java EE

    原标题:一篇文章带你读懂: Java EE 点击上图,查看教学大纲 何为 Java EE Java EE是一个标准中间件体系结构 不要被名称"Java PlatformEnterprise ...

  4. 【转】JAVA EE 6 规范综述

    目录 1.JAVA EE规范综述 2.JAVA EE整体架构 3.JAVA EE规范的角色划分图 4.JAVA EE平台依赖的J2SE API 5.JAVA EE平台的版本变迁 6.JAVA EE平台 ...

  5. Java EE开发三剑客现状及发展浅析

    JSF 2.0 尽管 Java 在展示层框架上竞争的非常激烈,但 JSF 仍然固守着自己的领地.虽然有很多关于 JSF 的易用性和健壮性的质疑声,但 JSF2.0 就是为正面解决这些问题而提出来的,它 ...

  6. 从Java EE到Jakarta EE,企业版Java的发展历程

    眼看他起高楼,眼看他宴宾客,眼看他楼塌了. 本文已被https://yourbatman.cn收录:程序员专用网盘https://wangpan.yourbatman.cn:公号后台回复"专 ...

  7. 从Java EE到Jakarta EE的发展历程

    目录 ✍前言 JDK发展简史 什么是Java EE? Java EE发展史 补充:什么是Eclipse基金会 有Java EE SDK吗? 什么是Jakarta EE Jakarta EE发展史 一站 ...

  8. Java EE之RMI

    开始学Java EE,为什么不从Servlet,JSP学起,而偏要选择一个在如今企业级开发中基本上不会直接用到的RMI,是因为大名鼎鼎而又臭名昭著但又不得不学的EJB建立在RMI基础之上.怀揣着李约瑟 ...

  9. java ee 7 新_Java EE 7:新功能???

    java ee 7 新 我有点"晚点",可以这么说--就Java EE 7的 "博客"而言. 自2013年6月发布以来,已经差不多10个月了 ,但是它仍然相对较 ...

最新文章

  1. Poj2480欧拉函数
  2. git 32位_编译64位的BorderlessGaming
  3. Orleans入门例子
  4. spark StandAlone模式下的作业提交流程
  5. list 如何判空以及为什么
  6. CAN FD:测量和重编程
  7. 新cBSS敏捷发布实践
  8. 计算机专业普通的期刊,计算机类的普通期刊
  9. 纳韦斯托克斯方程的推导_纳维-斯托克斯方程(N-S方程)详细推导.ppt
  10. 前端骨架屏方案与实践
  11. console接口跟Telnet命令初步调试交换机
  12. 华为od机考真题-统计射击比赛成绩
  13. Codeforces Gym 100015C City Driving 离线LCA
  14. 1.ROS编程学习:helloworld的c++与python实现
  15. 【英雄九日集训】(七月第一轮)第一天——数组
  16. SrpingCloud系统学习 - 熔断机制
  17. html 一键复制 ios,h5实现一键复制到粘贴板-兼容ios
  18. SDWebImage如何避免复用
  19. 改变别人的思想的艺术
  20. 合肥工业大学 慕课 梦溪笔谈 习题答案

热门文章

  1. 分享一套阿里高级Java面试题,要去阿里的先过这些题。
  2. 漫画:什么是一致性哈希
  3. 某同学工作之后的感悟
  4. 时间胶囊——给未来的留言板
  5. Gradle 简单使用
  6. React路由组件传递参数
  7. React中判断已完成的个数
  8. SparkSQL 内置函数的使用(JAVA与Scala版本)
  9. linux微信公众号报警,zabbix报警媒介,微信报警,邮件报警
  10. 16岁应该遵循什么_成人学习一般遵循的规律