1. spring事务写在哪一部分,为什么不写在DAO,Controller层
事务写在Service层。
为什么不在DAO层?
- 在数据库中,所谓事务是指一组逻辑操作单元即一组sql语句。当这个单元中的一部分操作失败,整个事务回滚,只有全部正确才完成提交。
- 如果放在了DAO层,每一次增删改查都将提交一次事务,那么事务的一致性就会被破坏。
- 一般在Service的一处可以调用DAO层的多处,所以只要添加一处事务注解@Transactional,这样才能体现事务的特性。
为什么不在Controller层?
- 不推荐,但是事实上可以实现把事务放在Controller层。
- 一般不会将事务放在Controller层,而且直接放是会报404错误的(因为SpringMVC和Spring是两个不同的容器)。application.xml中应该负责扫描除@Controller的注解如@Service,而SpringMVC的配置文件应该只负责扫描@Controller,否则会产生重复扫描导致Spring容器中配置的事务失效。
