我有一个spring mvc项目,在服务层中有很多代码可以将请求转发到DAO层,就像在这个示例中一样。
https://www.journaldev.com/3531/spring-mvc-hibernate-mysql-integration-crud-example-tutorial
@Override
@Transactional
public void updatePerson(Person p) {
this.personDAO.updatePerson(p);
}
@Override
@Transactional
public List<Person> listPersons() {
return this.personDAO.listPersons();
}
并且根据软件设计哲学,这不是很好。
那么重构服务层和DAO层的更好方法是什么?
答案 0 :(得分:0)
这不是坏习惯,而是“关注分离”。
服务层是事务边界,负责数据转换(例如,对象到json),并且通常还要注意安全性。
另一方面,DAO层负责数据访问。
将这两层分开的优点是可测试性。您可以独立测试它们。
答案 1 :(得分:0)
@Transactional范围最好仅在dao层中。在服务层中,您可以进行预处理和后期处理以及数据转换。