Mil*_*aid 3 java jpa transactions eclipselink java-ee
在遗留代码中,我解决了嵌套事务的问题.(Spring,CDI等不能只使用纯JPA(EclipseLink))
em.getTransaction().begin();
em.persist(client);
em2.getTransaction().begin();
em2.persist(client1); //saved into DB
em2.getTransaction().commit();
em.getTransaction().rollback();
public void method(){
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
em.persist(client);
nestedTransactionMethod();
em.getTransaction().rollback();
}
public void nestedTransactionMethod(){
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
em.persist(client);
em.getTransaction().commit();
}
Run Code Online (Sandbox Code Playgroud)
问题是当我调用inside方法时,在其中打开事务的另一个方法是自我事务,而不是表现为原子.有没有解决方法如何实现这一点而不给出开放的实体经理作为参数?
JPA和JTA不支持嵌套事务.
当您需要整体交易管理系统时.比使用一个.有许多可能性.Spring是应用程序服务器中的Java或容器管理系统之一.您还可以使用符合JTA的事务管理器自行处理整个操作.我告诉你作为一个基于Jboss TM编写分布式事务管理系统的人 - >不要这样做,这并不容易,而且会花费大量的时间.
| 归档时间: |
|
| 查看次数: |
1727 次 |
| 最近记录: |