Spring+Hibernate 延
迟加载和声明式事务处
理最终解决方案
一、 spring+hibernate 时使用 hibernate 的延迟加载功能是
存在的问题:
spring 是一个设计层面的框架,他解决的是业务逻辑层
和其他各层的松耦合问题,因此它将面向接口的编程
思想贯穿整个系统应用。Spring 的 orm 框架用来集成其
他 持 久 层 框 架 , 比 如 hibernate , spring-orm 框 架 对
hibernate 的 session 进行了封装,我们可以很方便的通
过 继 承 这 个 封 装 类 HibernateDAOSupport 并 注 入
hibernate 的 sessionFactory 完成初始化,并调用其内置
对象 HibernateTemplate 的 封 装 方 法 来 调 用 session 的
API 而不用考虑到 session 的初始化和关闭以及事务处
理 等 系 统 操 作 , 这 也 是 AOP 思 想 的 一 种 体 现 。
Hibernate 的延迟加载功能是指获取某个实体对象时并
不从数据库中加载他的关联对象,而在实际获取关联
对象的时候才从数据库中加载,这样做很好的节省了
数据库资源但是前提是必须保持 session 处于打开状态,
在所有操作完成后再关闭。Spring 封装了 session 操作
后 很 自 然 的 要 做 到 在 方 法 调 用 的 前 后 打 开 和 关 闭
session,这样我们在通过 HibernateTemplate 的方法来