Author: 江南白衣
Spring的Error Code统一翻译机制挺实用的,可以把各种数据库的各种Error Code分成六大类,分别转为6种异常抛出,让你可以用异常捕获机制捕获自己感兴趣的异常。
比如我最关心的,对象因为有级联引用,不应该被删除的情况,就属于dataIntegrityViolation(数据校验)异常,同属于此的错误还有值的唯一性失败等。这样,我在代码里只要捕捉DataInterityViolation就可以了,不用管什么数据库,也不用hard code几种需要同样处理的Error Code.
这个翻译机制的配置很简单,spring已提供了默认的error code--异常影射表,但还不够完全,你可以将sql-error-codes.xml文件copy到src根目录,spring就会转去读你的加强版。
springside的src目录里有此配置文件,对hsqldb的error code作了加强,你打开来看一下就知道如何]配置的了。
<bean id="HSQL" class="org.springframework.jdbc.support.SQLErrorCodes">
<property name="databaseProductName">
<value>HSQL Database Engine</value>
</property>
<property name="badSqlGrammarCodes">
<value>-22,-28</value>
</property>
<property name="dataIntegrityViolationCodes">
<value>0,-8,-9</value>
</property>
</bean>