服务类中的@Transactional,不调用数据库

时间:2018-02-04 23:38:17

标签: spring spring-transactions

当服务类没有Jpa存储库的实现时,我的理解是用Transactional注释它是错误的,例如这个服务类不应该有@Transactional

@Service
public class BillingAddressServiceImpl implements BillingAddressService {

    public BillingAddress setByUserBilling(UserBilling userBilling, BillingAddress billingAddress) throws DataAccessException

    {
        billingAddress.setBillingAddressName(userBilling.getUserBillingName());
        billingAddress.setBillingAddressStreet1(userBilling.getUserBillingStreet1());
        billingAddress.setBillingAddressStreet2(userBilling.getUserBillingStreet2());
        billingAddress.setBillingAddressCity(userBilling.getUserBillingCity());
        billingAddress.setBillingAddressState(userBilling.getUserBillingState());
        billingAddress.setBillingAddressCountry(userBilling.getUserBillingCountry());
        billingAddress.setBillingAddressZipCode(userBilling.getUserBillingZipCode());

        return billingAddress;
    }

}

2 个答案:

答案 0 :(得分:0)

Transactional注释代表声明Spring bean方法的数据库事务处理。

由于您的服务方法不能使用数据库,因此声明事务处理是没有意义的。

答案 1 :(得分:0)

事务性注释仅用于调用数据库的方法或类,事务注释的一个用途是回滚 - 这意味着当我们调用数据库时,将会记录成功调用之间的中间状态和它的原始状态,这是因为在失败的调用情况下,系统不会崩溃但能够返回其原始状态