Responsibilities and use of Service and DAO Layers 服务层和DAO层的职责和使用

10 浏览
0 Comments

Responsibilities and use of Service and DAO Layers 服务层和DAO层的职责和使用

我目前在使用Struts2与Spring插件和Hibernate开发一个Web应用程序,当我查看在线示例时,我看到了使用Service和DAO层的用法,现在我想知道Service和数据访问对象层的真正用途是什么?如果Service层只是调用DAO层的方法来执行CRUD操作,直接调用DAO层的方法不是更合理吗?

让我们以Dao和Service层的示例为例

PeopleService

@Transactional
public class PeopleService {
    private PeopleDao pDao;
    public PeopleDao getPDao() { return pDao; }
    public void setPDao(PeopleDao peopleDao) { this.pDao = peopleDao;   }
    public void createPerson(String name){
        pDao.createPerson(name);
    }
    public List getPeople(){
        return pDao.getPeople();
    }
}

PeopleDao

public class PeopleDao {
    private SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public Session sess() {
        return sessionFactory.getCurrentSession();
    }
    public Person getPersonById(long id) {
        return (Person) sess().load(Person.class, id);
    }
    public void deletePersonById(long id) {
        sess().delete(getPersonById(id));
    }
    public void createPerson(String name) {
        Person p = new Person();
        p.setName(name);
        sess().save(p);
    }
    @SuppressWarnings("unchecked")
    public List getPeople() {
        return sess().createQuery("from Person").list();
    }
}

我的问题是,如果Service层只是被代表DAO注入并调用其方法,那么Service层的真正用途是什么?

0