我目前正在使用带有 Spring 插件和休眠的 Struts2 开发 Web 应用程序,当我查看在线示例时,我看到了 Service 和 DAO 层的使用,现在我想到了 Service 和数据访问对象层的真正用途是什么?如果 Service 层只是调用 DAO 层的方法来执行 CRUD 操作。直接调用 DAO 层方法不明智吗?
比方说这个 Dao 和服务层的例子
人事服务
@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<Person> getPeople(){
return pDao.getPeople();
}
}
人道
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<Person> getPeople() {
return sess().createQuery("from Person").list();
}
}
我的问题是,如果服务层仅由其代表 DAO 注入然后调用其方法,那么它们的真正用途是什么?