Spring数据访问和事务
1、模型 2、解耦 3、实现 3.1 核心接口 3.2 代码分析 3.2.1 事务管理 3.2.2 数据访问 4、使用 4.1 编程模式 4.2 配置模式 4.2.1 声明式配置方式 4.2.2 注解式配置方式 5、总结 1、模型 在一般的编程习惯中,Spring的数据访问和事务处理的层次结构归纳如下图所示: 图. 1 2、解耦 Spring事务作为一个独立的组件,其目的就是为了与数据访问组件进行分离,这也是Spring事务框架设计的原则。根据这一职责清晰的原则,Spring在设计时就对事务和数据访问进行了很好的职责划分,这个可以从spring-tx和spring-jdbc这两个包就可以看出来。 但是在实际的代码中,会遇到一个棘手的问题:事务和数据访问操作都需要同一个数据库连接资源,那么它们之间怎么传递呢? 这里涉及三个方面:一是线程安全,二是资源的唯一性,三是事务和数据访问的解耦。 图. 2 在图2中的1、2和3这三个地方都需要使用数据库连接,并且是同一个连接。Spring的做法是将该连接放在一个统一的地方,要使用该资源,都从这个地方获取,这样就解决了事务模块和数据访问模块之间的紧耦合。 解除耦合之后,对于不同的ORM技术,则需要提供不同的事务管理实现,如下图所示: 图. 3 3、实现 3.1 核心接口 Spring事务框架的核心接口是:TransactionDefinition