当前位置: 首页 > news >正文

看网站搜索什么关键词东莞企业展厅设计公司

看网站搜索什么关键词,东莞企业展厅设计公司,html5手机网站整套模板,网页设计报告体会JPA 2.1版带来了一种新的方式来处理持久性上下文与当前JTA事务以及资源管理器之间的同步。 术语资源管理器来自Java事务处理API #xff0c;它表示操纵一个资源的组件#xff08;例如#xff0c;使用JDBC驱动程序操纵的具体数据库#xff09;。 默认情况下#xff0c;容器… JPA 2.1版带来了一种新的方式来处理持久性上下文与当前JTA事务以及资源管理器之间的同步。 术语资源管理器来自Java事务处理API 它表示操纵一个资源的组件例如使用JDBC驱动程序操纵的具体数据库。 默认情况下容器管理的持久性上下文的类型为SynchronizationType.SYNCHRONIZED 即该持久性上下文自动加入当前的JTA事务并将对持久性上下文的更新传播到基础资源管理器。 通过创建新类型为SynchronizationType.UNSYNCHRONIZED的持久性上下文将禁用事务的自动连接以及将更新传播到资源管理器。 为了加入当前的JTA事务代码必须调用EntityManager joinTransaction()方法。 这样EntityManager的持久性上下文将在事务中登记并为后续通知注册。 提交或回滚事务后持久性上下文将离开事务并且不会附加到任何其他事务直到再次为新的JTA事务调用joinTransaction()方法joinTransaction() 。 JPA 2.1之前一个可以实现与一个跨越多个方法调用的对话Stateful由亚当边描述会话Bean 在这里 Stateful TransactionAttribute(TransactionAttributeType.NEVER) public class Controller {PersistenceContext(type PersistenceContextType.EXTENDED)EntityManager entityManager;public Person persist() {Person p new Person();p.setFirstName(Martin);p.setLastName(Developer);return entityManager.merge(p);}public ListPerson list() {return entityManager.createQuery(from Person, Person.class).getResultList();}TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)public void commit() {}Removepublic void remove() {} } 持久性上下文的类型为EXTENDED 因此其生存期比它所附加的JTA事务的寿命长。 由于持久性上下文默认也是SYNCHRONIZED类型因此它将在调用任何会话bean方法时自动加入正在运行的任何事务。 为了防止大多数Bean方法发生这种情况注释TransactionAttribute(TransactionAttributeType.NEVER)告诉容器不要为此Bean打开任何事务。 因此方法persist()和list()无需事务即可运行。 对于方法commit()此行为是不同的。 这里的注释TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)告诉容器在调用该方法之前创建一个新事务因此Bean的EntityManager将自动加入该事务。 使用新的SynchronizationType.UNSYNCHRONIZED类型可以如以下清单所示重写上面的代码 Stateful public class Controller {PersistenceContext(type PersistenceContextType.EXTENDED,synchronization SynchronizationType.UNSYNCHRONIZED)EntityManager entityManager;public Person persist() {Person p new Person();p.setFirstName(Martin);p.setLastName(Developer);return entityManager.merge(p);}public ListPerson list() {return entityManager.createQuery(from Person, Person.class).getResultList();}public void commit() {entityManager.joinTransaction();}Removepublic void remove() {} } 现在EntityManager不会自动加入当前事务我们可以省略TransactionAttribute批注。 在我们明确加入之前任何正在运行的事务都不会对EntityManager产生影响。 现在这是在commit()方法中完成的甚至可以基于某些动态逻辑来完成。 为了测试上面的实现我们利用了一个简单的REST资源 Path(rest) Produces(text/json) SessionScoped public class RestResource implements Serializable {Injectprivate Controller controller;GETPath(persist)public Person persist(Context HttpServletRequest request) {return controller.persist();}GETPath(list)public ListPerson list() {return controller.list();}GETPath(commit)public void commit() {controller.commit();}PreDestroypublic void preDestroy() {} } 该资源提供了持久化人员列出所有持久化人员并提交当前更改的方法。 当我们要使用有状态会话Bean时我们用SessionScoped注释资源然后让容器注入Controller Bean。 在将应用程序部署到某个Java EE容器之后通过调用以下URL一个新人员将被添加到非同步的持久性上下文中但不会存储在数据库中。 http://localhost:8080/jpa2.1-unsychronized-pc/rest/persist 即使调用list方法也不会返回新添加的人员。 只有最终通过调用commit()将持久性上下文中的更改与基础资源同步才将insert语句发送到基础数据库。 结论 持久性上下文的新UNSYNCHRONIZED模式使我们可以在不止一个有状态会话bean的方法调用上实现对话并且可以灵活地根据我们的应用程序逻辑动态地加入JTA事务而无需任何注释魔术。 PS源代码可从github获得 。 翻译自: https://www.javacodegeeks.com/2015/03/jpa-2-1-unsynchronized-persistence-context.html
http://www.pierceye.com/news/112321/

相关文章:

  • 九江建网站的公司做废钢那个网站好
  • 做网站官网需多少钱wordpress查看访问者ip
  • 美食网站php源码wordpress 文章消失
  • 四川住房和城乡建设厅网站万达网站建设
  • 网站运营一般做那些分析快手营销软件
  • 重庆大渡口建设网站站群搭建
  • 2018年网站开发技术动漫电影做英语教学视频网站
  • 设备管理系统网站模板网站开发基础知识试题
  • wordpress建立好的网站万能搜索网站
  • 杭州 高端网站建设wordpress 不显示ip
  • 校考前做试题的网站池州哪里有做网站
  • 四合一小说网站搭建教程WordPress主题资源
  • 网站制作com台州网站哪家专业
  • 网站怎么上百度阿里云网站建设
  • 全国最大的网站建设公司肇庆网络推广
  • 网站做301跳转需解析设计用哪些网站有哪些功能
  • 如何将网站添加到信任站点手机价格
  • 做网站显示上次登录时间代码深圳有哪些招聘网站
  • 网站开发可选择的方案页面设计说明
  • 手机付费咨询网站建设网站正能量免费推广软件晚上
  • 网站群建设技术规范seo收索引擎优化
  • 西安网站托管维护百度首页广告
  • 洛龙区网站设计建设免费网页小游戏
  • 建设摩托125图片大全优化大师怎么删除学生
  • 郑州哪家公司给国外做网站闵行网站推广
  • 微网站 开发提供坪山网站建设
  • 狗狗和人做网站centos6搭建wordpress
  • 培训教育学校的网站建设方案vx小程序怎么制作
  • 泉州网站建设优化公司酒店网络营销推广方案
  • 重庆潼南网站建设公司电话crm客户关系管理平台