Spring @Transactional包装2个方法

che*_*vim 4 spring annotations dao transactions

我是春天的新人.我为我的dao方法使用@Transactional注释:

@Transactional
public Person getById(long id) {
    return new Person(jdbcTemplate.queryForMap(...));
}

@Transactional
public void save(Person person) {
    jdbcTemplate.update(...);
}
Run Code Online (Sandbox Code Playgroud)

我已经设置了这样的事务管理器:

<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)

问题是,当我的客户端代码调用dao.save(..),然后dao.getById(4)这些发生在两个单独的事务中.如何将这2个调用包装在同一个数据库事务中?理想情况下,不以编程方式进行.

谢谢

Rak*_*yal 5

将事务属性放在DAO层中是不好的做法.另外,我不确定为什么你需要getById方法的事务.即使您想使用事务,也需要为save和getById方法指定传播行为为REQUIRES_NEW.