如果我对服务会话方法使用@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();
}
}