Spring文档说@Repository
注释启用“异常翻译”。
嗯,但我在哪里抓到它们?在DAO方法内还是有另一个系统?
答案 0 :(得分:3)
DAO抛出的任何东西都将被取消选中。不要在DAO中抓到任何东西。如果您在DAO或服务方法中捕获异常,Spring将不知道回滚事务。在控制器层配置异常处理,即通常会捕获数据访问异常的地方,因为除了记录它们之外没有任何事情可以处理它们。
答案 1 :(得分:1)
这意味着如果您使用Spring Abstraction for JDBC,JPA / Hibernate或JDO,那么您不必实现JDBC或RDBMS供应商特定的错误处理。所以Spring包装了所有这些异常,然后将它们包装到DataAccessException
类中。如果要切换到不同的持久性技术,则不必担心会对代码进行折旧。