使用iBatis数据映射框架吧
如果您厌烦了编写 JDBC,可以考虑使用另一个功能丰富的数据映射框架 iBatis,它能够实现大多数同样的好处,并且只需要编写非常少的代码。
- Hibernate
- JDO
- EJB Entities 3
- EJB Entity Beans 2.x
- TopLink
- 开发人员对 SQL 的了解以及使用 SQL 是否得心应手。对象查询语言仍不能免除必须了解 SQL,这是因为通常需要了解如何调优查询语言。
- 对象关系映射程序对于某些类型的应用程序是重量级的。例如,必须连续执行多个更新操作的批处理应用程序通常能够更好地依次执行 SQL 语句,而无需所有额外的对象交互。
- 存储过程是必需的或者已经存在。使用存储过程有多种合理的理由。在某些场景中,它们可以减少网络 IO 的数量,因为 SQL 语句可以在数据库依次执行。
- 数据库管理员具有权限。许多开发组织对于 SQL 以及可以定义 SQL 的人员有严格的规定。有时,只有数据库管理员有权创建 SQL 并对 SQL 的性能进行调优。
- 以前的环境。例如,正在从已经调优并测试 SQL 查询的平台上迁移应用程序。
- 应用程序正在运行于 J2EE™ 平台。Java 对象仍需要作为数据传输对象从业务逻辑层传递到视图层,因此需要一些代码将结果集数据移到数据传输对象,然后从数据传输对象移到 SQL 更新、插入或者删除。
- 应用程序仍需要抽象层。只是因为某人使用了 JDBC,它不能免除必须正确地对代码分层。
- 应用程序需要将 SQL 从 Java 代码提取出来以进行调优。
- 冗余是不可避免的。在编写 JDBC 时,开发人员常常发现自己在一次又一次地编写相同的普通代码,如获得连接、准备语句、循环结果集以及其他一些 JDBC 特定元素。
public class Customer implements Serializable { private String name; private int customerId; private CustomerOrder customerOrder; public Customer() { System.out.println("Creating CustomerBO..."); } /** * @return Returns the customerId. */ public int getCustomerId() { return customerId; } /** * @param customerId The customerId to set. */ public void setCustomerId(int customerId) { this.customerId = customerId; } /** * @return Returns the name. */ public String getName() { return name; } /** * @param name The name to set. */ public void setName(String name) { this.name = name; } /** * @return Returns the customerOrder. */ public CustomerOrder getCustomerOrder() { return customerOrder; } /** * @param customerOrder The customerOrder to set. */ public void setCustomerOrder(CustomerOrder customerOrder) { this.customerOrder = customerOrder; }} |
<sqlMap namespace="Customer"> <parameterMap id="updateCustomerOrderParamMap" class="com.ibm.ibatis.sample.bo.CustomerOrder"> <parameter property="orderId" /> <parameter property="customerId" /> </parameterMap> <resultMap class="com.ibm.persistence.ibatis.bo.Customer" id="customerOrderMap"> <result property="customerId" column="CUST_ID" nullValue="0" /> <result property="customerOrder.orderId" column="OPEN_ORDER_ID" nullValue="0" /> <result property="customerOrder.customerId" column="CUST_ID" nullValue="0" /> </resultMap> <statement id="checkCustomer" parameterClass="java.lang.Integer" resultMap="customerOrderMap"> SELECT CUST_ID, OPEN_ORDER_ID FROM CUSTOMER_USER.CUSTOMER WHERE CUST_ID = #customerId# FOR UPDATE </statement> <statement id="getOrderId" parameterClass="java.lang.Integer" resultClass="java.lang.Integer"> SELECT ORDER_ID FROM CUSTOMER_USER.ORDER WHERE CUSTOMER_ID = #customerId# AND STATUS='OPEN' </statement> <statement id="insertOrder" parameterClass="java.lang.Integer"> INSERT INTO CUSTOMER_USER.ORDER (STATUS, TOTAL, CUSTOMER_ID)VALUES('OPEN',0,#customerId#) </statement> <statement id="updateCustomerOrderId" parameterMap="updateCustomerOrderParamMap"> UPDATE CUSTOMER_USER.CUSTOMER SET OPEN_ORDER_ID = ? WHERE CUST_ID = ? </statement></sqlMap> |
//Access SQL client MaopSqlMapClient sqlMapClient = OrderEntryConfig.getSqlMapInstance(); //1. Retrieve total using SUM() function in SQL Integer total = (Integer)sqlMapClient.queryForObject("getOrderTotal",new Integer (customerOrder.getOrderId())); //2. Set total in CustomerOrder Object customerOrder.setTotal(total); //3. Update Total column in DB sqlMapClient.update("updateOrderTotal",customerOrder); |
- JDBC 事务界定,包括对委托给 JDBC 事务 API、EJB 容器中的容器托管事务或者 JTA 事务中的用户事务对象的支持。
- 覆盖缺省数据类型映射和创建自定义类型映射程序的功能。
- 到复杂对象图的复杂连接的映射,包括多种 Java 集合类型。
- 将数据加载到 HashMaps 的功能(在查询时列名是未知的)。
- 对象图 lazy loading。
- JDBC 批处理语句。
- 映射到存储过程。
- 动态的 SQL 映射,其中 SQL 语句可以构造为基于 JavaBean 的状态。
- 缓存结果和委托给其他缓存机制(如 IBM WebSphere® Application Server 动态缓存)的功能。
- 新增的 DAO 框架;iBatis 提供了在数据映射程序中可以选择使用的 DAO 模式的完整实现。
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文
- iBatis 项目站点
- IBatis 下载资料和文档
- DB2 UDB、WebSphere 和 iBATIS。
- IBM WebSphere: Deployment and Advanced Configuration
- Patterns of Enterprise Architecture
|
Roland Barcia 是位于纽约/新泽西地区的 IBM Software Services for WebSphere 的一名 IT 咨询专家。他还是 IBM WebSphere: Deployment and Advanced Configuration 一书的合著者。有关 Roland 的更多信息,请访问他的网站。
|
转载于:https://blog.51cto.com/cping1982/129821
使用iBatis数据映射框架吧相关推荐
- iBatis.Net(C#)SQL数据映射
转载请注明 http://www.cnblogs.com/13590/archive/2013/03/01/2938126.html 摘要:本文探讨了iBatis.Net框架的XML数据映射文件各配置 ...
- MyBatis是持久化层框架(SQL映射框架)-操作数据库
MyBatis是持久化层框架(SQL映射框架)-操作数据库 1.环境搭建 1).创建一个java工程: 2).创建测试库,测试表,以及封装数据的javaBean,和操作数据库的dao接口 创建表:自己 ...
- iBatis for net 框架使用
简介:ibatis 一词来源于"internet"和"abatis"的组合,是一个由Clinton Begin在2001年发起的开放源代码项目,到后面发展的版本 ...
- 一个类GraphQL的ORM数据访问框架发布
Zongsoft.Data 发布公告 很高兴我们的 ORM 数据访问框架(Zongsoft.Data)在历经两个 SaaS 产品的应用之后,今天正式宣布对外推广! 这是一个类 GraphQL 风格的 ...
- 用Java实现自己的数据库OR映射框架
OR框架翻译过来就是对象关系映射框架,一提起OR框架,马上就会想起大名鼎鼎的Hibernate,Ibatis,以及其他的一些对象关系映射框架,并惊叹它的神奇.在惊叹之余,不免会产生兴趣一探他们的实现原 ...
- 数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框 ...
- 使用FoundationDB高效地将SQL数据映射到NoSQL存储系统中
NoSQL数据库 --FoundationDB的键-值存储系统 FoundationDB是一个分布式的键-值存储系统,支持全局ACID事务操作,并且性能出众.在安装系统时,可以指定数据分发的级别.数据 ...
- 数据源架构模式之数据映射器
http://lobert.iteye.com/blog/2102312 前面分别介绍了数据源架构模式之表数据入口.数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数 ...
- 开源实体映射框架EmitMapper介绍
综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/. EmitMapper映射效率比较高,接近硬编码.EmitMapper采用emi ...
最新文章
- 使用python画CDF
- GATK 无法下载的问题
- 过滤注入代码的存储过程
- 【VMCloud云平台】SCOM配置(四)-监控应用可用性
- 欢乐纪中某B组赛【2019.1.26】
- C语言结构体使用与指针的理解
- 导入数据库出现html lang='zh' dir='ltr' class='ie ie7错误代码解决方法
- 学校为什么要单位接收函_为什么要选择语言学校留学?
- 32位jdk最大内存_Java安装之JDK下载篇
- 数据可视化(5)--jqplot经典实例
- oracle监听程序无法分配,oracleORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序的问题...
- 文件磁盘相关函数[22]-文本文件读写-不同数据类型的写入
- 小米2s安卓10刷机包_小米10刷机包
- c盘分小了如何扩大c盘,重新分区扩大c盘
- 产业分析:东方甄选vs罗永浩直播间
- ae合成设置快捷键_AE软件中最常用快捷键大全(学AE必备)
- 微信小程序图片组件,ios不显示,安卓正常
- python中len 函数_Python函数精解:len()函数
- prototype.js开发者手册
- 康奈尔大学统计学数据科学与计算机学院,美国康奈尔大学统计学专业.pdf