Spring事务管理高级应用难点剖析: 第2部分 - 编程入门网
Spring事务管理高级应用难点剖析: 第2部分时间:2012-04-26 IBM 陈雄华联合军种作战的混乱 Spring 抽象的 DAO 体系兼容多种数据访问技术,它们各有特 色,各有千秋。像 Hibernate 是非常优秀的 ORM 实现方案,但对底层 SQL 的控制不太方便; 而 iBatis 则通过模板化技术让您方便地控制 SQL,但没有 Hibernate 那样高的开发效率;自 由度最高的当然是直接使用 Spring JDBC 莫属了,但是它也是最底层的,灵活的代价是代码的 繁复。很难说哪种数据访问技术是最优秀的,只有在某种特定的场景下,才能给出答案。所以 在一个应用中,往往采用多个数据访问技术:一般是两种,一种采用 ORM 技术框架,而另一种 采用偏 JDBC 的底层技术,两者珠联璧合,形成联合军种,共同御敌。 但是,这种联合 军种如何应对事务管理的问题呢?我们知道 Spring 为每种数据访问技术提供了相应的事务管 理器,难道需要分别为它们配置对应的事务管理器吗?它们到底是如何协作,如何工作的呢? 这些层出不穷的问题往往压制了开发人员使用联合军种的想法。 其实,在这个问题上, 我们低估了 Spring 事务管理的能力。如果您采用了一个高端 ORM 技术(Hibernate,JPA, JDO),同时采用一个 JDBC 技术(Spring JDBC,iBatis),由于前者的会话(Session)是对 后者连接(Connection)的封装,Spring 会“足够智能地”在同一个事务线程让前 者的会话封装后者的连接。所以,我们只要直接采用前者的事务管理器就可以了。下表给出了 混合数据访问技术所对应的事务管理器: 表 1. 混合数据访问技术的事务管理器
由于一般不会 出现同时使用多个 ORM 框架的情况(如 Hibernate + JPA),我们不拟对此命题展开论述,只 重点研究 ORM 框架 + JDBC 框架的情况。Hibernate + Spring JDBC 可能是被使用得最多的组 合,下面我们通过实例观察事务管理的运作情况。 清单 1.User.java:使用了注解声明 的实体类
Spring事务管理高级应用难点剖析: 第2部分(2)时间:2012-04-26 IBM 陈雄华再来看下 UserService 的关键代码: 清单 2.UserService.java:使用 Hibernate 数据访问技术
|
|||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |