Obowiązki i korzystanie z usług i warstw DAO

Obecnie pracuję nad aplikacją internetową przy użyciu Struts2 z wtyczką Spring i hibernacji, a kiedy przeglądałem przykłady online, widziałem użycie warstw Service i DAO, a teraz przyszło mi do głowy, jakie są rzeczywiste wykorzystanie warstw obiektów usług i dostępu do danych? Jeśli warstwa usług wywołuje tylko metody warstw DAO do wykonywania operacji CRUD. nie byłoby rozsądne, aby bezpośrednio wywoływać metody warstw DAO?

Powiedzmy, że ten przykład Dao i warstwy usług

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<Person> 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<Person> getPeople() {
        return sess().createQuery("from Person").list();
    }

}

Moje pytanie brzmi: jakie jest rzeczywiste wykorzystanie warstw usług, jeśli są one wstrzykiwane tylko przez ich reprezentatywne DAO, a następnie wywołują tę metodę?

questionAnswers(2)

yourAnswerToTheQuestion