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

标签 java hibernate transactions guice

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

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

/* import stuff */

public class DbProvider implements Provider<EntityManager> {

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

}

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

有人知道怎么解决吗?

最佳答案

在 Guice 中使用 @Transactional 工作 requires three things :

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

关于java - 使用 Hibernate 和 Guice 管理 JavaSE 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5287985/

相关文章:

Java:以数字方式对字符串数组进行排序

java - 使用 EclipseLink 在 JPA、hibernate 中重命名 persistence.xml 时出现问题

hibernate - 错误 : prepared transaction does not exist in postgresql

sql - 禁止存储过程中的事务

java - 使用 Hibernate Search + Infinispan Directory 的事务 ACID 属性

MySQL 事务没有返回足够的错误消息来帮助调试

java - JpaRepository 计数不同未按预期工作

java - Android:在单击按钮时在 TextView 中就地编辑文本

java - 获取有关 hyperledger Fabric 的信息

hibernate - 看似随机1 = 1由GORM的where闭包生成的where子句