管理托管bean

时间:2015-05-16 19:11:26

标签: java spring hibernate transactions rollback

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

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

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

1 个答案:

答案 0 :(得分:1)

应在服务层管理事务,而不是数据访问。 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
    }
}