gpt4 book ai didi

java - 来自 servlet 的 JPA 事务

转载 作者:行者123 更新时间:2023-11-30 11:46:48 24 4
gpt4 key购买 nike

我有一个 Java EE 6 servlet,它创建了一个 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 由容器管理,以便安全地注入(inject) PersistenceContext。看这个answer关于这一点。

完成此操作后,只需删除 begin()commit() 方法调用,因为事务边界由容器自动设置。

您也不再需要保留对 UserTransaction 对象的引用。

关于java - 来自 servlet 的 JPA 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9615400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com