使用Hibernate和Guice管理JavaSE中的事务
我正在编写一个使用GWT,Hibernate和Google Guice(使用GIN)的相当简单的应用程序。 我想要做的是使用外部管理器管理事务(比如在Spring中使用@Transactional
),而不是使用EntityManager#getTransaction
。 我尝试使用@Transactional
,但它似乎对我不起作用。
我已经使用Providers
注入了EntityManager,如下所示:
/* import stuff */ public class DbProvider implements Provider { public EntityManager get() { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persdb"); return emf.createEntityManager(); } }
在手动管理事务时,它似乎正常工作。 我希望自动管理事务,也可以使用DBUnit进行自动化测试。
有谁知道如何解决这个问题?
让@Transactional
在Guice工作需要三件事 :
- 你的类路径中需要
guice-persist.jar
- 调用
@Transactional
方法的对象必须由Guice创建 - 这些方法不能是
private