java - 管理我的托管 bean 中的事务回滚

标签 java spring hibernate transactions rollback

我正在使用 JPA/hibernate、Spring 和 JSF。
所以我的申请组织如下:
我有我的实体,
我的 Dao 接口(interface)和实现每个实体,其中我定义了基本方法:findByIdaddupdate删除 ... 然后我的服务层只使用 DAO 接口(interface),其中的方法与我的 DAO 中的方法基本相同。
我的问题是,在我的支持 bean 中,我有一个方法 Add_hospital(),它添加一家医院以及该医院的服务,所以我的方法看起来像

add_hospital(){ 
add-hospital(); 
add-services();
add-Hospital-schedule();
}

所以这个方法是一个事务,我希望如果发生一些问题,事务回滚,但我知道回滚需要在我的 DAO 中管理,我需要定义我的方法 Add_hospital() 在我的托管 bean 中,在这个阶段我有这种插入组合。
请问这个问题如何解决?

最佳答案

事务应该在服务层进行管理,而不是数据访问。 示例来自 spring :

@Transactional(readOnly = true)
public class DefaultFooService implements FooService {

    public Foo getFoo(String fooName) {
        // do something
    }

    // these settings have precedence for this method
    @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
    public void updateFoo(Foo foo) {
        // do something
    }
}

关于java - 管理我的托管 bean 中的事务回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30279721/

相关文章:

java - Hibernate - 多对多 - 带有常量表

java - Derby 数据库数据包含在项目中吗?

java - 从 C++ 和 Java 到 Ada 的类构造概念

java - 当输入字符串可以更改顺序时,在 Java 正则表达式中按名称提取组

java - Graphstream:设置节点之间的最小距离

java - 从 spring.start.io 创建基本示例后,请求映射返回 404 而不是映射的字符串

java - 如何将托管在 Google 云引擎上的 spring boot 应用程序连接到 mysql 数据库?

java - 在 JDK7 中使用 Spring 的 @Scheduled 时,出现有关 Repeatable class not found 的 Sonar 错误消息

java - 如何在 Hibernate 上比较同一实体的延迟加载对象?

java - WildFly 14 - java.lang.ClassCastException : org. dom4j.DocumentFactory 无法转换为 org.dom4j.DocumentFactory