作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码中有一些原子操作。从书本上看,这将是一个类例子。您从一个用户处取款是第一次数据库访问。然后你把这笔钱交给另一个用户,这将是第二次数据库访问操作。只有两者一起执行才能执行。如果第一个成功而第二个失败,则整个操作必须回滚。
所以在我的应用程序中我也有这个。也许这永远不会发生,但要确保我把它变成了一笔交易。例如。用户保存其假期。而且假期本身也保存在另一个表中。
这是我的代码。我决定将所有交易都放在这个类中。我称之为交易服务。我希望一切都好。当我收到一条错误消息时,我有点困惑,我的应用程序中有 2 个事务管理器。我刚刚决定使用名为 transactionManager 的一个。
@Service
public class TransactionService {
private UserDao userDao;
private HolidayDao holidayDao;
private WorkingMonthDao workingMonthDao;
@Autowired
public TransactionService(UserDao userDao,HolidayDao holidayDao,WorkingMonthDao workingMonthDao)
{
this.userDao = userDao;
this.holidayDao = holidayDao;
this.workingMonthDao = workingMonthDao;
}
//@Transactional(isolation=Isolation.READ_COMMITTED, propagation=Propagation.REQUIRED,readOnly=false,timeout=1000, rollbackFor=Exception.class)
@Transactional(value="transactionManager")
public void saveUserAndHoliday(User user, Holiday holiday)
{
userDao.save(user);
holidayDao.save(holiday);
}
@Transactional(value="transactionManager")
public void saveUserAndDeleteHoliday(User user, Holiday holiday)
{
holidayDao.delete(holiday);
userDao.save(user);
}
@Transactional(value="transactionManager")
public void saveUserAndWorkingMonth(User user, WorkingMonth workingMonth)
{
userDao.save(user);
workingMonthDao.save(workingMonth);
}
}
最佳答案
我会给这样的服务起另一个名字,可能会根据业务逻辑域将其分成几个类。假设您坚持干净代码原则并希望构建低耦合应用程序,将来可以轻松支持。据说交易属于cross-cutting concern应用程序架构。这意味着事务相关的类不应包含应用程序核心逻辑。此类的示例可以是自定义事务管理器。所有方法 saveUserAndHoliday
、saveUserAndDeleteHoliday
和 saveUserAndWorkingMonth
都负责业务逻辑的一部分,尽管只是一小部分 - 组合不同的 DAO。在我的实践中,我们通常将此类类称为 Repositories
- 服务(核心业务逻辑层)和 DAO(持久层)之间的中间层。
关于java - 创建一个transactionService类可以吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343907/
我是一名优秀的程序员,十分优秀!