![]() |
1
1
我认为这样做是为了把责任一分为二。 简而言之,dao是一个层,它封装了数据库的所有工作,服务层是放置业务逻辑的地方。 如果是这样,那么关于hibernate或任何其他与数据库相关的工具的知识必须保留在dao中,而服务应该对此一无所知。 例如,如果你决定从Hibernate切换到,比如说Jooq,或者更一般地说,为了改变其他关系数据库,也许NoSQL,服务层将保持不变,只有DAO实现会改变。 这种灵活性是一个很酷的事情,但是,当抛出DAO并到达服务层时,异常可以打破这种设计,因为如果服务必须捕获Hibernate特定的异常,则本质上与Hibernate耦合。 所以,spring“建议”抛出更通用的“dataaccessexception” 希望这能回答你的问题 |