HashMap关系数据映射技术

[b]HashMap关系数据映射技术[/b],是使用HashMap数据结构作为载体,实现应用程序和数据库之间数据存取的一种技术。【为简易起见,将“HashMap关系数据映”简称为“HRM”】

在Java世界中,就是使用Map对象作为载体,实现应用程序和数据库之间数据存取的一种技术。

JDBC是各大数据库供应商共同遵循的标准,数据库对于JDBC来说是完全透明的,数据库所有的结构信息都可以通过JDBC提取;而Map使用键值对表达数据,同数据库记录中的字段与字段值之间形成了对应关系。 由于有了这两个基础,从而为实现HashMap关系数据映射(HRM)技术提供了前提。正因为如此,ORM中定义xml映射文件或注入属性的做法完全是多余的。

HashMap关系数据映射(HRM)技术与对象关系映射(ORM)技术,它们的目标基本一致,但实现的技术手段有着本质的不同。ORM技术使用实体Bean或普通旧式Java Bean(POJO)作为载体,实现数据存取。 因此,需要定义大量的实体bean或Java Bean,实体bean或java bean 中还需要定义大量的属性,如果一个数据库表有上百个甚至数百个字段,定义这样的bean,对于编程人员来说将是难以忍受的。 不仅如此,这到目前为止,ORM还必须定义xml映射文件或者通过注入属性的方式找到bean的属性与字段之间的对应关系,这在物理上是对数据库的结构信息进行了重复定义,从而人为导致了软件工程文件量的急剧膨胀, 必然导致大量的人力财力的投入。

使用HashMap关系数据映射(HRM)技术,完全不需要大量的bean类,更不需要定义xml映射文件或者注入属性。其优点是很明显的。


[size=medium]0.1 HashMap关系数据映射技术的构思过程 [/size]
2003年,我取得了SUN认证Java2程序员的资格,这是我程序人生的重要起点。之前,我有过两年的dbase经历、四年的C++Builder经历。2004年,我正在认真研读《Java数据库编程宝典》和《Java Developers ALMANAC》两部著作,翻阅了若干部其它Java书籍,那时对Hibernate一度产生了浓厚的兴趣,但用了后觉得挺麻烦。

为什么要构思HashMap关系数据映射技术,那是因为我有了以前的经历,有了对比,所以对当时以Hibernate为代表的对象关系映射技术产生了强烈地质疑,回想以前dbase数据库编程,好简洁、好轻松。作为一种工具,在能够解决问题的前提下,减轻工作负担,才是值得称道的。ORM把解决的问题复杂化了,导致软件工程文档急剧膨胀,软件的开发效率低,成本高。

使用Hibernate实现数据库编程,根本不比JDBC轻松。当时Hibernate受到了整个软件行业的吹捧,我觉得存在很大的盲目性,如果用户需要实现EJB分布式事务,Hibernate是个合理的可选项,其它情况下未必合理。

在这种情况下,我会把对HashMap关系数据映射技术的研究坚持下去。

[size=medium]
0.2 早期HashMap关系数据映射技术产品Pvo1.x [/size]
2005年年底,我向国家版权局提交“HashMap关系数据映射技术软件v1.0【简称:PVO v1.0】”软件著作权登记,2006年7月5日取得该著作权证书,登记号:2006SR08692。

这可能是我今生最重要的一项研究成果,如果对Java同行会有帮助,我希望它能成为Java世界的共同财富,因此,我决定将它开源。

2006年4月26日,我初次在CSDN发表了首篇博文“HashMap关系数据映射技术(简称PVO技术) ”,一度引起了同行们的关注。我要感谢所有转载、收藏这篇文章的朋友,感谢所有评价这篇文章的朋友,不论是赞扬也好,还是贬低也好。有了朋友的关注,我会更认真地对待这一技术的研究。值得一提的是,2006年6月1日,我收到了来自中科院软件所一位同志的来信,向我提出了其中的一个bug问题和开源问题。后来,他非常肯定地告诉我:“与hibernate等超级工具相比,pvo略显单薄,但是pvo的优势就是它的小巧,方便,易用。在小的项目中,比hibernate更合适”,他还告诉我pvo技术用在当时的一些奥运项目和北京市政府的一些项目中,在这些项目中,他们同时使用了Hibernate和pvo,认为它们各有优势。非常感谢他的坦诚、热情。但令我感到有点遗憾的是,当时的pvo刚刚诞生,还存在许多不足。

需要说明的是,pvo同后来流行的iBatis/MyBatis有类似之处,但二者是完全不同的技术产品。pvo构思和发表时,作者并不知道有iBatis。二者如有雷同,纯属巧合。pvo是一款简化JDBC数据库编程的工具,使用的是JDBC事务,没有提供JTA分布式事务的支持,这是根据需求所决定。在Jave世界,真正使用JTA分布式事务的工程只是少数,而提供这种技术支持的产品相当成熟,如果用户需要使用Java分布式事务,建议使用JPA2.x、Hibernate3.x等技术。 请注意:JDBC事务、JTA事务是不能混合使用的,JTA事务必须受JavaEE服务器支持,目前的web服务器均不支持JTA事务。当前主流的大型数据库服务器自身都具有分布式事务处理的能力。

pvo的核心类是ProcessVO.java,主要用来实现数据库的CRUD操作,采用HashMap关系数据映射技术(HRM)实现,因此无需配置数据库映射文件、无需注解,使用起来小巧、灵活、方便。更多详细描述请参阅http://my.csdn.net/wj800的博客。

pvo后来的变化,主要体现在以下几点:

•增加了万能表单解析工具ProcessForm

•增加了一组读取管理数据库信息的工具Db.java、Table.java、Field.java

•增加了一个客户端辅助javascript工具,pvo.js

ProcessForm是一个真正意义上的万能表单解析工具,它可以提取任何复杂的表单所上传的数据,将这些数据整理成List<Map>类型的结果集,支持任何类型的文件上传,如果包含图片文件,则自动提取图片文件的宽度、高度、文件类型等信息,可以解析任意未知的表单,因此在B/S编程中,非常有用。可以毫不夸张地说,ProcessForm目前胜过任何一款上传解析工具。更重要的是,能直接将解析结果作为ProcessVO相关方法的参数,把数据保存到数据库中。从而做到了,提交表单与保存数据之间的完美组合。

pvo.js的作用是将表单自动整合成xml数据,以Ajax方式提交给web服务器,ProcessForm支持xml格式的表单数据的解析。pvo.js的第二个作用是,实现了javascript的Map对象,支持javascript对List<Map>类型数据的处理。

Db.java、Table.java、Field.java的作用是将原ProcessVO中的部分功能独立出来,并加以丰富,独立提取、管理数据库的结构信息,为ProcessVO等服务;使得pvo数据库的编程更加智能化、人性化。这三个类出现后,在pvo中增加了一个DbFree类,试图让JDBC数据库编程更加自由、轻松,但DbFree的目标没有完成,我在考虑是否要重新整合pvo,HashMap关系数据映射技术的一个新的实现正在酝酿中。

[size=medium]0.3 PVO凤凰涅槃,JadePool华丽转世 [/size]
大概在2010年,我就有重新整合pvo的想法,后来由于同连云港一家信息技术公司合作开发在线建站系统,耗费的精力太多,这事就搁置了。2012年10月的一天,突然感到很无聊,想起了两年前想做的事情。想了几天,新的HashMap关系数据映射技术工具就叫“JadePool”吧。

JadePool的中文含义是瑶池,是中国神话中西王母宴请各路神仙的仙境,那里蕴藏着丰富的宝藏。而这里的JadePool一头连接着用户,另一头连接着数据库,在另一头同样蕴藏着巨大的宝藏。jadepool.cn这个域名,一次性注册了10年的使用期,www.jadepool.cn将来就作为HRM的主题网站。

JadePool是通过对原有pvo1.x深度整合、精心设计而得到的结果,是基于HashMap关系数据映射(HRM)技术实现的高效的JDBC编程工具。

上世纪80年代,中国棋圣聂卫平刮起的聂旋风席卷神州大地。那时,我同一批小年轻的战友一样爱上了围棋,一段时间天天研究布局、定式、手筋、官子,研究围棋的技术、战术,业余时间常常拼得你死我活,一时间,曾打遍营区无敌手,后来居然还拿到了业余初段证书。入段就意味着一个棋手已经有了良好的大局观,他会站在更高、更远、更深的层次来思考问题,而不是仅仅局限于某一技术、战术的层面。

JadePool是绝对站在全局的高度所研发的一款高效的JDBC数据库编程工具,一旦将它引入我们的程序开发,将会对整个软件工程产生深刻的影响。大家不妨从小的项目着手试一试JadePool能够带来的好处。花半小时来学习一下JadePool,将会给你的程序设计带来一场革命性的变化。

在我所接触的软件开发人员中,已经听到N多次数据库死锁的问题,说实在的,每次听到有人向他们报告数据库死锁的问题,我总是感到很诧异。怎么会呢?在我所开发的大小十多个系统中,至今还没有发现过数据库连接死锁的现象。过去的pvo和现今的JadePool在异常处理上还是下了一番功夫的。

JadePool的能力


•极为简便的应用

•极为高效的编程能力

•相当可观的的程序执行效率

•智能提取数据库结构信息

•智能插入更新记录

•大型数据记录分组索引查询

•永远告别数据库连接死锁

•对获取的查询结果再加工

•万能表单解析

•良好的面向对象的体系设计,为今后的发展奠定了坚实的基础

•......


以上这些能力,将会在JadePool源代码测试中得到充分的验证。这一切,足以让JadePool应用者从繁重的数据库编程中解放出来,可以把更多的精力放在业务逻辑的处理上,创造更多更好的软件产品。

作者在此郑重承诺,JadePool永远是开源的。本站将详细讲解JadePool源代码的重要的技术细节,对每一个重要的技术细节进行认真测试,会认真地听取广大同行的建议,对发现的问题及时修正。


更多参阅:http://www.jadepool.cn
个人博客:http://my.csdn.net/wj800
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值