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

时间:2011-03-13 07:01:21

标签: java hibernate transactions guice

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

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

/* import stuff */

public class DbProvider implements Provider<EntityManager> {

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

}

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

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

1 个答案:

答案 0 :(得分:6)

@Transactional在Guice requires three things中工作:

  • 您的课程路径中需要guice-persist.jar
  • 必须由Guice
  • 创建调用@Transactional方法的对象
  • 方法不得为private