Spring中的ORM
Spring框架提供了对HIbernater, JPA, JDO的整合及管理。
推荐的整合方式是使用DAOs,而不是直接使用原生的HIbernate, JPA, JDO APIs.
使用Spring来创建ORM DAOs的优点:
便于测试 -
通用的data access异常 - Spring包装了ORM工具特有的异常类。可以在合适的层次上对这些异常进行处理,从而避免了在DAO中进行大量的异常捕获,抛出和声明;当然也可以像传统的方式那样处理异常。
通用的资源管理 - Spring应用程序上下文(application context)提供了对持久化资源(persistence resource)的配置管理,如Hibernate的SessionFactory实例,JPA的EntityManagerFactory实例,JDBC的DataSource实例等。Spring提供了简单,有效,安全的方式来处理这些持久化资源。
整合了事务管理 -
资源及事务管理
异常转换(Exception Translation)
Spring通过注解 - @Repository透明地引入了异常转换。
例如:
@Repository
public class ProductDaoImpl implements ProductDao {
// class body here...
}
Postprocessor会自动查找所有的异常转换器 - exception translators(实现了接口PersistenceExceptionTranslator的类),并通知所有使用@Repository注解的beans,从而使这些异常转换器可以对抛出的异常进行中断并应用适当的转换。
当然,我们同样可以使用原生的持久化技术来实现DAO,并利用注解来获得事务管理,依赖注入,异常转换等Spring提供的功能。