Data Access Object 目的是让 data access技术(JDBC,Hibernate,JPA)更容易的被使用。而且让你的不需要担心每种框架的异常捕获问题,因为会有一个统一的处理。
2.1 使异常层次处理一致
Spring提供一个异常转化技术,例如SQLException转化成自己的异常。这些异常都包裹着原始异常,所以你永远也无需担心会丢失异常的问题。
除了的JDBC异常,Spring也会吹JPA和Hibernate异常,把他们转化成一系列runtime异常。这可以让你最清晰的处理某一层异常,无需使用try catch模板。
前面的讨论都是关于ORMS框架的模板类,如果你是用基于拦截器的类,应用肯定会最关心HibernateExceptions和 PersistenceExceptions,他可以委托给onvertHibernateAccessException(…) 或者 convertJpaAccessException() 通过使用SessionFactoryUtils。这些方法会把异常转化成
org.springframework.dao
异常相容的异常。当PersistenceExceptions未checked时,也可以被直接抛出。