Най-големите причини, поради които съм склонен да имам сервизен слой, са следните две причини...
-
Маркиране на методите като @Transactional, така че всички DAO заявки в този метод да се извършват в една транзакция.
-
Мога да увелича отделянето на загрижеността от DAO и потребителските роли. Мога да маркирам методите като изискващи определени потребителски роли и като такъв той стои много добре на Spring Security.
Можете просто да извикате DAO от контролера, но ще останете блокирани, ако искате да разширите по-късно. За да получите връзката, можете да използвате маркиране на услугата като @Transactional и DAO като @Repository и Spring ще се справи с цялото получаване на обекта на сесията за вас и инжектиране и т.н.
Склонен съм да мисля (може би неправилно) за слоя на услугата като за фасада, до която има достъп, било то от уеб услуга или контролер или каквото и да е, тя поддържа разделяне.