Java 来自servlet的JPA事务
我有一个JavaEE6servlet,它创建了Java 来自servlet的JPA事务,java,jpa,jta,Java,Jpa,Jta,我有一个JavaEE6servlet,它创建了FooBarModelImpl的一个实例,这个类使用JPA获取一些资源 public class FooBarModelImpl { @Resource UserTransaction ut; @PersistenceContext(unitName="fooBarUnit") private EntityManager em; public void addPackage(UpgradePackageE
FooBarModelImpl
的一个实例,这个类使用JPA获取一些资源
public class FooBarModelImpl
{
@Resource
UserTransaction ut;
@PersistenceContext(unitName="fooBarUnit")
private EntityManager em;
public void addPackage(UpgradePackageEntity p)
{
try{
ut.begin();
em.persist(p);
ut.commit();
} catch (..) {}
}
}
持久化单元的配置方式如下:
<persistence-unit name="fooBarUnit" transaction-type="JTA">
我的问题是如何摆脱手动处理
ut.begin()
和ut.commit()
?我希望使用JPA,以便容器处理事务管理。您必须确保您的类FooBarModelImpl
由容器管理,以便安全地注入PersistenceContext
。关于这一点,请看这个
完成后,只需删除begin()
和commit()
方法调用,因为事务边界是由容器自动设置的
您也不再需要保留对UserTransaction
对象的引用