什么是@Repository bean的“持久性异常转换”

时间:2012-08-30 19:25:26

标签: spring spring-annotations

我正在阅读带有注释部分的Spring,并且我遇到了@Repository注释 我读到@Repository bean与@Component bean的区别在于它们有资格进行持久性异常转换。

有人可以详细说明持久性异常翻译的含义吗?

3 个答案:

答案 0 :(得分:11)

持久性异常翻译是将低级持久性异常转换为高级Spring异常的过程。

来自SpringSource网站:

  

常见数据访问异常。 Spring可以包含你的异常   选择O / R映射工具,将其转换为专有工具   (可能已检查)公共运行时的异常   DataAccessException层次结构。这使您可以处理最多   持久性异常,不可恢复,仅在   适当的层,没有恼人的样板捕获/抛出,和   异常声明。您仍然可以捕获和处理异常   你需要的任何地方。请记住JDBC异常(包括DB   特定方言)也转换为相同的层次结构,意思是   您可以在一致的情况下使用JDBC执行某些操作   编程模型。

这样做的一个主要好处是异常变成了运行时异常,实际上你不需要将throws声明添加到方法签名中。

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

答案 1 :(得分:2)

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

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

查看SQLErrorCodeSQLExceptionTranslatorsql-error-codes.xml

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

答案 2 :(得分:0)

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