Spring DAO

Author: 江南白衣

1. Error Code 统一翻译

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>