20

我正在阅读带有注释部分的 Spring,我遇到了@Repository注释
,我读到@Repositorybean 与 bean 不同,@Component因为它们有资格进行持久性异常翻译。

有人可以详细说明持久性异常翻译是什么意思吗?

4

3 回答 3

15

Persistence Exception Translation 是将低级持久性异常转换为高级 Spring 异常的过程。

来自 SpringSource 网站:

常见的数据访问异常。Spring 可以包装来自您选择的 O/R 映射工具的异常,将它们从专有(可能检查的)异常转换为公共运行时 DataAccessException 层次结构。这允许您仅在适当的层中处理大多数不可恢复的持久性异常,而无需烦人的样板捕获/抛出和异常声明。您仍然可以在任何需要的地方捕获和处理异常。请记住,JDBC 异常(包括特定于 DB 的方言)也会转换为相同的层次结构,这意味着您可以在一致的编程模型中使用 JDBC 执行一些操作。

这样做的主要好处之一是将异常转换为运行时异常,实际上您不需要将 throws 声明添加到方法签名中。

http://static.springsource.org/spring/docs/2.5.x/reference/orm.html

于 2012-08-30T19:49:26.120 回答
5

无论您使用何种数据库类型或持久性方法/技术,它都提供一致的异常层次结构。

无论您使用的是 Oracle 与 MySQL 还是 JPA 与 JDBC,对于相同类型的错误,您都会得到相同的异常。

查看SQLErrorCodeSQLExceptionTranslatorsql-error-codes.xml

sql-error-codes.xml特别有趣,因为您可以看到所有各种特定于供应商的错误代码以及它们映射到的层次结构中的异常。

于 2018-04-25T01:16:05.127 回答
1

Spring 异常翻译机制可以透明地应用于所有使用 @Repository 注释的 bean——通过在 Context 中定义一个异常翻译 bean 后处理器 bean

于 2017-07-27T13:27:10.227 回答