使用Hibernate和Guice管理JavaSE中的事务

mha*_*ski 0 java hibernate transactions guice

我正在编写一个使用GWT,Hibernate和Google Guice(使用GIN)的相当简单的应用程序.我想要做的是使用外部管理器管理事务(比如 @Transactional在Spring中使用),而不是使用EntityManager#getTransaction.我试过用@Transactional,但它似乎对我不起作用.

我已经使用了EntityManager注入Providers,如下所示:

/* import stuff */

public class DbProvider implements Provider<EntityManager> {

    public EntityManager get() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("persdb");
        return emf.createEntityManager();
    }

}
Run Code Online (Sandbox Code Playgroud)

在手动管理事务时,它似乎正常工作.我希望自动管理事务,也可以使用DBUnit进行自动化测试.

有谁知道如何解决这个问题?

Mic*_*rdt 6

@Transactional在吉斯工作需要三件事情:

  • 您需要guice-persist.jar在类路径中
  • @Transactional调用方法的对象必须由Guice创建
  • 方法一定不能 private