2012-02-09 56 views
0

我有一个EJB,其方法(除其他外)加载实体并对其进行修改。如果方法完成,那么该实体的修改会自动提交到数据库,而无需调用EntityManager.aveOrUpdate()方法?并且当该方法失败时,该EJB方法的事务将随着该实体的修改一起回滚?EJB方法的JPA实体和TransactionContext

回答

1

使用EJB隐式地,您的方法与事务绑定。 如果您使用实体管理器加载实体,则该实体附带有持久性上下文,因此如果您在对象上进行了修改,则在事务结束时,如果一切正常,则事务提交并将修改刷新到数据库,否则如果发生错误,事务将回滚,并且修改将被丢弃。

+0

如果出现问题并引发异常,则回滚操作取决于它是否为运行时异常,或者它是否使用@ApplicationException注释声明。请参阅http://blog.dblevins.com/2010/07/applicationexception-is-evil-sort-of.html – 2012-02-09 19:23:04

+0

感谢您的回答。 – Barcelona 2012-02-10 00:22:24