对Hibernate,Spring提供很多IoC特性的支持
- 通用的资源管理:Spring的ApplicationContext能管理SessionFactory,使得配置值很容易被管理和修改。无须使用Hibernate的配置文件
- 有效的Session管理:Spring提供有效,简单和安全的HibernateSession处理
- 方便的事务管理:Hibernate的事务管理处理不好,会限制Hibernate的表现,而Spring的声明式事务管理粒度是方法级
- 异常包装:Spring能够包装Hibernate异常,把它们从checked exception变为runtime exception。开发者可选择在恰当的层处理数据库的不可恢复异常,从而避免繁琐的catch/throw以及异常声明
Spring对Hibernate的简化主要有如下几个方面
- 基于依赖注入的SessionFactory管理机制。SessionFactory是执行持久化操作的核心组件。传统Hibernate应用中,SessionFactory必须手动创建;通过依赖注入,代码无须关心SessionFactory,SessionFactory的创建,维护由BeanFactory负责管理
- 更优秀的Session管理机制。Spring提供“每事务一次Session”的机制,该机制能大大提高系统性能,而且Spring对Session的管理是透明的,无须在代码中操作Session
- 统一的事务管理。无论是编程式事务,还是声明式事务,Spring都提供一致的编程模型,无须繁琐的开始事务,显式提交、回滚。如果使用声明式事务管理,事务管理逻辑与代码分离,事务可在全局事务和局部事务之间切换
- 统一的异常处理机制。不再强制开发者在持久层捕捉异常,持久层异常被包装成DataAccessException异常的子类,开发者可以自己决定在合适的层处理异常,将底层数据库异常包装成业务异常
- HibernateTemplate和HibernateDaoSupport 支持类。HibernateTempate能完成大量Hibernate持久层操作,这些操作大多只需一行代码,非常简洁