Я думаю, что это сделано ради четкого разделения обязанностей.
В двух словах, DAO - это уровень, который заключает в себе всю работу с базой данных, а уровень Service - это место для размещения вашей бизнес-логики.
Если это так, знания о Hibernate или любом другом инструменте, связанном с базой данных, должны оставаться внутри DAO, и Service не должен ничего знать об этом.Если вы, например, решите перейти с Hibernate на, скажем, Jooq, или, в более общем смысле, решите сменить реляционную базу данных на что-то другое, возможно, на NoSQL, уровень обслуживания останется таким же, и изменится только реализация DAO.
Эта гибкость - классная вещь, однако исключения, когда выбрасываются из DAO и достигают уровня сервиса, могут нарушить этот дизайн, потому что если сервис должен перехватывать специфические исключения Hibernate, он по существу связан с Hibernate.
Итак, Spring «предлагает» добавить гораздо более общее «DataAccessException»
Надеюсь, что это отвечает на ваш вопрос