1 / 19
iBATIS SQL Maps(一)
前段时间写了些
Hibernate 方面的
系列文章 ,网友们反映还不错。在接下来的时间里,我将会引入另外一种
O/R
Mapping 解决方案
——iBATIS
,本系列将沿用
Hibernate 系列文章的风格。
什么是
iBATIS
?
和众多的
SourceForge 开源项目一样,
iBATIS 曾经也是其中的一员。在
2004
年
11
月
3
日成功地成为了
Apache Incubator 下的子项目。
iBATIS 包括
for Java 和
for .NET 两个版本,
for Java 版提供了
SQL Maps 和
DAO 框架,
for .NET 只提供了
SQL Maps 框架。从现在开始我们只对
for Java 版的
SQL Maps 展开讨论。
你可以在 http://www.ibatis.com 下载 iBATIS for Java ,目前最新版本是 2.0.9 ,压缩包里已经包含了 SQL
Maps(ibatis-sqlmap-2.jar) 和 DAO 框架 (ibatis-dao-2.jar) 。
为什么选择
iBATIS
?
也许各位看官已在各种不同的技术资料上了解到它的优势。但是对于我来说,选择它的理由只有一个
——“
利用原
有资源
”
。
Hibernate 的却优秀,但是用来整合原有系统,它却很难胜任。例如,以前在进行数据建模时使用了复合
主键、跨越多表产生的几十甚至上百行的查询语句、利用原有存储过程 … … 当面临这一系列问题时 Hibernate 就显得
力不从心了,要想使用 Hibernate 就只能改造原有系统!
当我面临系统整合问题时(整合的要求很简单:只需要保留原有系统查询部分),
iBATIS 进入了我的视线。原有
系统中除
SQL
语句需要小小的修改外,数据表、查询结果都不需要改变!也不用像
Hibernate 那样映射出众多的配置
文件、
POJO
,一下子清爽了很多。
BTW
:
Hibernate 这种做法没有错!只是我只需要查询功能,仅仅是取我所
好而已,避免了杀鸡用牛刀。
目前,系统整合已经结束,花了一个月时间。如果使用 Hibernate ,恐怕我现在还在为怎么设计数据表、怎样下 HQL
而和同事争论。
开始另一次
O/R Mapping
之旅
上次
O/R Mapping 之旅的
BO 、数据表还可以重用,只是把数据库迁移到了
MySQL
。打开
Eclipse
,新建一个
Resin 项目。把
ibatis-sqlmap-2.jar 和
ibatis-common-2.jar 拷贝到
lib 目录下,再导入项目。和
Hibernate 自动配置、
自动映射相比,
iBATIS 的一切都是手工完成的。
在
src 下建立配置文件
SqlMapConfig.xml
,数据库链接、连接池、
SqlMap 映射文件
… … 这些都要靠它了。
官方参考手册对怎样进行设置有很详细的描述,我只对要用到的地方进行粗略说明。
<?xml version="1.0" encoding="UTF-8" ?>