Spring DAO 存储库异常处理

Spring DAO Repository exception handling

Spring 文档说 @Repository 注释启用 "exception translation"。

嗯,但我在哪里抓到它们?就在 DAO 方法内部还是有另一个系统?

这意味着如果您正在为 JDBC、JPA/Hibernate 或 JDO 使用 Spring 抽象,那么您不必实施 JDBC 或 RDBMS 供应商特定的错误处理.所以 Spring 包装了所有这些异常,然后将它们包装成 DataAccessException class。当你想切换到不同的持久化技术时,你不必担心重构你的代码。

DAO 抛出的任何东西都不会被选中。不要在 DAO 中捕获任何东西。如果您在 DAO 或服务方法中捕获异常,Spring 将不知道回滚事务。在控制器层配置异常处理(使用异常处理程序,而不是 try-catch),这是数据访问异常通常会被捕获的地方,因为除了记录它们之外没有什么可做的来处理它们。