发布一个自用的Java简易版ORM框架

发布一个自用的Java简易版ORM框架

 

看过Hibernate和iBatis的强大,也见过最原始的BaseDAO使用的痛苦。有的时候我感觉很纳闷,既然要主张DAO的灵活,那就不可能将复杂的SQL都支持或支持得非常好;又要主张ORM,那就又得作一些限制。于是,我只能依着自己的实际来写一套自己的简易版ORM框架,去除Hibernate这类框架的复杂关联映射,仅支持单表的持久化映射动作。目前这个简易版ORM框架在Oracle/MySQL/MS SQL Server中均通过初步测试,既可以中规中矩地使用GenericsDAO这个类来完成常用的DAO动作(CRUD),又可以破框架直接继承GenericsBaseDAO这个类来完成复杂查询条件的DAO类的编写。下面的图片中就演示了这两个方面的应用:

 

1、GenericsDAO这个类来完成常用的DAO动作(CRUD)

 

https://p-blog.csdn.net/images/p_blog_csdn_net/CodingMouse/EntryImages/20090905/GenericsDAO这个类来完成常用的DAO动作(CRUD).png

 

通过上面的这些DAO方法,我们就可以完成常用的CRUD动作了。SQLParameterWrapper这个包装器是用于对SQL(条件)参数的封装,采用可变参数调用,这样,我们可以根据实际情况添加多个查询条件。并且,我也推荐使用SQLParameterWrapper包装器来构建查询条件,如果入口参数是POJO对象,那么,框架也就自动将POJO中非null值的成员变量映射为对应的SQLParameterWrapper对象。因此,直接使用当然效率会高一些。不过经过测试,效率的损失很少,可以忽略不计。下面演示了一些调用实例:

 

 

与上面的测试相关的POJO代码内容由我之前发布的POJO代码生成器自动从数据库表反转生成得来,其内容如下:

 

 

以下是映射档的内容:

 

 

对于上面的映射档,主要作用是通知框架POJO对应的数据库表名称及ID列名称(或Oracle中的sequence标识对象),以便于框架中的SQLGenerator这个SQL命令生成器自动构建SQL命令及赋予SQL参数值。

 

 

2、继承GenericsBaseDAO这个类来完成复杂查询条件的DAO类的编写

 

首先写一个DAO类让它直接继承GenericsBaseDAO,以获得基本的JDBC浅封装方法调用权。

 

 

下面是AccountDAO的调用测试:

 

 

以上仅为演示,所以SQL查询条件给得并不复杂,可以根据实际情况调配。

 

上面的DAO数据库连接均由以下配置档负责管理:

 

 

可以看到,里面还包括我模拟的一个简易版数据库连接池的配置,当然,在这里,我强制性地让所有DAO都使用这个简易版数据库连接池来获取数据库连接,准备在下一个测试版中给用户自由选择的权利 。配置档中的<show-sql>节点为true时代表要求在控制台输出SQL生成器自动创建的SQL语句及参数信息,正式运行或做批量添加测试时请设置为false。

 

好了!今天就大致介绍到这里。这个简易版的ORM框架jar包及演示视频我已经上传,有兴趣的朋友可以自行下载测试,欢迎提出宝贵意见和建议。纯属爱好,谢绝“重复造轮子”之类的评论,我只是热爱Java、热爱自己敲代码封装一些代表性功能。

 

文章jar包下载地址:http://download.csdn.net/source/1634892

 

完整压缩包(含演示视频)下载(由于文件太大,CSDN上传又老是不成功,就上传在RayFile网盘上了,下载需要安装RayFile下载客户端工具)

文件名:  CmSdk4j ORM Framework Beta Edition 1.0.zip
下载地址:  http://www.rayfile.com/files/51d4eb99-a753-11de-a488-0014221b798a/

 

新增网盘Http直接下载地址:http://www.xun6.com/file/3ea49ff11/CmSdk4j+ORM+Framework+Beta+Edition+1.0.zip.html

 

By CodingMose

2009.9.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值