商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

Spring DAO层的设计思想


    JDBC的异常转换器
    传统的JDBC API在发生几乎所有的数据操作问题都抛出相同的SQLException,它将异常的细节性信息封装在异常属性中,所以如果希望了解异常的具体原因,你必须分析异常对象的信息。

    SQLException拥有两个代表异常具体原因的属性:错误码和SQL状态码,前者是数据库相关的,可通过getErrorCode()返回,其值的类型是int;而后者是一个标准的错误代码,可通过getSQLState()返回,是一个String类型的值,由5字符组成。

     Spring根据错误码和SQL状态码信息将SQLExeption翻译成Spring DAO的异常体系。在org.springframework.jdbc.support包中定义了SQLExceptionTranslator接口,该接口的两个实现类SQLErrorCodeSQLExceptionTranslator和SQLStateSQLExceptionTranslator分别负责处理SQLException中错误代码和SQL状态码的翻译工作。将SQLException翻译成Spring DAO异常体系的工作是比较艰辛的,但Spring框架替我们完成这项艰巨的工作并保证转换的正确性,我们有充分的理由依赖这个转换的正确性。

    其它持久技术的异常转换器
    由于各种框架级的持久化技术都拥有一个语义明确的异常体系,所以将这些异常转换为Spring DAO的体系相对轻松一些。下面,我们将对不同持久化技术的异常转换器进行学习。

    由于Hibernate 3.0版本和低版本不兼容,Spring分别为这两个版本分别提供了支持(这也可以看出Hibernate在Spring中所享受的特殊礼遇)。在org.springframework.orm包中,分别为Spring所支持的ORM持久化技术定义了一个子包,在这些子包中提供相应ORM技术的整合类。Spring为各个ORM持久化技术所提供的异常转换器在表 2中说明:

表 2 各ORM持久化技术异常转换器

ORM持久化技术

 

 

异常转换器

 

 

Hibernate

 

 

org.springframework.orm.hibernate.SessionFactoryUtils

 

 

Hibernate 3.0

 

 

org.springframework.orm.hibernate3.SessionFactoryUtils

 

 

JPA

 

 

org.springframework.orm.jpa.EntityManagerFactoryUtils

 

 

JDO

 

 

org.springframework.orm.jdo.PersistenceManagerFactoryUtils

 

 

TopLink

 

 

org.springframework.orm.toplink.SessionFactoryUtils

 

 


    ORM持久化技术 异常转换器
    Hibernate org.springframework.orm.hibernate.SessionFactoryUtils
    Hibernate 3.0 org.springframework.orm.hibernate3.SessionFactoryUtils
    JPA org.springframework.orm.jpa.EntityManagerFactoryUtils
    JDO org.springframework.orm.jdo.PersistenceManagerFactoryUtils
    TopLink org.springframework.orm.toplink.SessionFactoryUtils
    这些工具类除了具有异常转换的功能外,在进行事务管理时,还提供了从事务上下文中返回相同会话的功能。
Spring也支持iBatis ORM持久化技术,由于iBatis抛出的异常是和JDBC相同的SQLException异常,所以直接采用和JDBC相同的异常转换器。
1 2 3 4 5 6
【内容导航】
第1页: 第1页 第2页: 第2页
第3页: 第3页 第4页: 第4页
第5页: 第5页 第6页: 第6页
©版权所有。未经许可,不得转载。
[责任编辑:赵恒]