Apache Geronimo和Spring框架,第3部分: 集成DAO与ORM - 编程入门网
: 集成DAO与ORM(3)
时间:2011-10-13 IBM Arun Chhatpar
为什么使用 iBATIS? 那么为什么选择 iBATIS 用于应用程序? 将 SQL 语句映射到对象十分简单 能够从应用程序中抽象出高级别的细节 简单的应 用程序数据库不要求使用诸如 Hibernate 之类的更复杂的解决方案 iBATIS 数据库层附带了两个 库:SQL 映射和 Data Access Object 框架,接下来将详细查看这两个库。 iBATIS SQL 映射 又称为 Data Mapper 框架。iBATIS SQL 映射框架可以减少访问关系数据库通常所需的代码量。 此框架的特别之处在于它有核心函数库。Data Mapper 框架允许为 Java 应用程序设计和实现更优秀的持 久层,方法是使用简单的 XML 描述符将对象与 SQL 语句或存储过程耦合在一起。它还有助于分离应用程 序开发中的职能:允许开发人员灵活地将纯 SQL 映射到 Java 对象,同时允许 DBA 优化实际的 SQL 语 句以提高性能。 在本教程的稍后部分中,将看到在 ORM 示例中使用 SQL 映射是多么轻松。 iBATIS Data Access Object 框架 它是 iBATIS 框架提供的另一个抽象层 API。它隔离持 久性解决方案的具体细节,并提供通用 API 透明地访问应用程序中的数据。 iBATIS DAO 是一个 精心打造、设计健壮的框架;本文的主要目标是展示 Spring Framework 所能提供的功能,这也是为什么 要使用 Spring 的 DAO 层来抽象与持久层的通信。使用 Spring 的动态配置功能,可以很容易切换到任 何受支持的持久性框架,例如 Hibernate、JDO 或 Apache ObJectRelationalBridge (OJB)。 Spring 中的持久性 Spring 框架用来解决持久性问题的两种最重要方法是 Spring DAO 和 Spring ORM 模块。下面列出了其中的一些问题及 Spring 框架是如何帮助解决这些问题的: 不同 的数据源使测试变得困难。如上所述,Spring 的 IoC 方法使交换与对象关系 (O/R) 相关的各种实体的 实现和配置的位置变得十分简单。这简化了孤立地测试与持久性相关的代码的各个片段的过程。 特定于供应商的数据访问异常。Spring 可以将来自任选的 O/R 映射工具的异常转换成已定义的异常集, 这些异常更易于理解。 事务管理。Spring 负责处理事务语义和处理回滚等操作的相应事务。 供应商固定,并允许混合-搭配的实现策略。使用 Spring 的解耦方法,可以在运行时使用和更改 各种 API、数据源和实现。使用此方法不必固定使用特定供应商的产品和服务,并可以根据需要混合搭配 。 软件开发人员一直以来都在寻求一种持久保持模型的简洁方法,但未取得很大成功。最佳的持 久性框架允许使用一种透明的方法而无需侵入域模型。Spring 框架用它的两个模块 DAO 和 ORM 来完成 此工作。 Spring DAO Spring 框架设计允许直接集成到一些常见的 O/R 映射 API,例如 JDO、Hibernate 和 iBATIS。其主要目标是隐藏和抽象数据库事务(如从应用程序代码中创建连接以及管 理这些连接及其他内容)的繁琐细节。Spring DAO 模块使您可以定义在应用程序中负责数据中心操作的 接口(类必须实现的抽象类型)。 Spring JDBC Spring JDBC API 提供了各种软件包以服 务于所有数据库需求。其核心软件包包含 JdbcTemplate 类,该类负责与数据库操作相关的所有函数。另 外它还提供了一种更通用的异常处理架构。 要了解关于这两种技术的更多信息,请阅读本系列教 程的 第 1 部分。接下来将开始扩展在 第 2 部分 中构建的电话本应用程序以使用 Spring JDBC 和 DAO 模块。 回顾电话本应用程序和创建数据库 要扩展应用程序以使用 Spring DAO 和 Spring ORM 模块,必须先在 Derby 中添加并填充模型所需的表。在那之前,先要检查工作区目录结构、回顾已 有电话本应用程序的事件流程、查看新的事件流程,这些事件将反映出使用了 JDBC-DAO 和 ORM 的扩展 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |