如何重构将请求转发给DAO的服务方法?

时间:2019-06-26 01:35:05

标签: java design-patterns software-design

我有一个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层的更好方法是什么?

2 个答案:

答案 0 :(得分:0)

这不是坏习惯,而是“关注分离”。

服务层是事务边界,负责数据转换(例如,对象到json),并且通常还要注意安全性。

另一方面,DAO层负责数据访问。

将这两层分开的优点是可测试性。您可以独立测试它们。

答案 1 :(得分:0)

@Transactional范围最好仅在dao层中。在服务层中,您可以进行预处理和后期处理以及数据转换。