使用@Transactional和JPA EntityManager进行JEE 7 CMT事务

时间:2017-10-27 19:40:05

标签: jpa java-ee transactions entitymanager transactional

如果我对服务会话方法使用@Transactional注释,是否仍然需要使用通过JPA EntityManager访问的Transaction对象的begin(),commit()和rollback()方法。如果是这样,如果@Transactional注释没有自动划分事务边界以开始和提交事务,那么它提供的值是多少? 下面的交易方法的代码是否格式良好,或者是否应该更改某些内容?

例如:

public class MyDataSession {

  @PersistenceContext( unitName = "default" )
  EntityManager myEntityManager;
  protected EntityManager getEntityManager() { return myEntityManager; }
  ...

@Transactional public void storeMyData( MyData inMyData )
{
  try {
    getEntityManager().getTransaction().begin();
    getDataService().storeMyData( inMyData  );
    getEntityManager().getTransaction().commit();
  }
  catch( Exception errorException )
  {
    getEntityManager().getTransaction().rollback();
  }
}

0 个答案:

没有答案
相关问题