【发布时间】:2015-08-24 15:25:54
【问题描述】:
Spring 文档说 @Repository 注释启用“异常翻译”。
好吧,但是我在哪里抓到它们呢?在 DAO 方法内部还是有另一个系统?
【问题讨论】:
Spring 文档说 @Repository 注释启用“异常翻译”。
好吧,但是我在哪里抓到它们呢?在 DAO 方法内部还是有另一个系统?
【问题讨论】:
DAO 抛出的任何内容都将被取消选中。不要在 DAO 中捕获任何东西。如果您在 DAO 或服务方法中捕获异常,Spring 将不知道回滚事务。在控制器层配置异常处理(使用异常处理程序,而不是使用 try-catch),这是通常会捕获数据访问异常的地方,因为除了记录它们之外没有任何事情可以处理它们。
【讨论】:
这意味着如果您使用 Spring Abstraction for JDBC、JPA/Hibernate 或 JDO,那么您不必实现 JDBC 或 RDBMS 供应商特定的错误处理。所以 Spring 包装了所有这些异常,然后将它们包装到 DataAccessException 类中。当您想切换到不同的持久性技术时,您不必担心会重构您的代码。
【讨论】: