Spring Field —— iBatis
Spring Field(春田步枪)这把二战时期经典的步枪相比大家都比较熟悉。虽然这名字听起来很像日本人设计生产的,但是这是美国人在二战时设计的,并大量装备美军。Spring Field步枪属于半自动步枪,没打一枪之后,需要手动退弹。虽然这玩意并不怎么自动化,但是它的性能还是不错的。
其实iBatis很像Spring Field的。它并不如Hibernate或者ActiveRecord那么自动化,但是当你把这东西用好之后,你会发现它给了你最大的自由!当你像自己手动调校一下SQL查询的性能时,SQL语句就在那里摆着,没错!就在那里。想想看,如果你对数据库非常了解,对SQL了如指掌,那么iBatis简直可以让你为所欲为。还等什么呢?拉动枪栓,扣动扳机,Just a clear shout!
iBatis没有自动化的系统,你需要手动去写每个SQL,当然,你可以用一些工具来生成一些没有性能要求的SQL语句,比如UPDATE、INSERT或者DELETE语句。但当你需要对SELECT进行调校并对数据库的表进行优化时,很好,你的SQL就在那里,不用任何人再次告诉你一遍。改吧,很轻松就能搞定,而且不要说你看不懂这些SQL。
博文视点策划编辑:李雨来
MP40 —— ActiveRecord模式
MP40,一把很好的冲锋枪,虽然是二战时德军的装备,但是这东西深受广大德军的爱戴。如果你玩过使命召唤或者荣誉勋章,那么这把枪你肯定很熟悉。弹夹能装32发子弹,射速很快,精度不错。当然,在游戏中端着这家伙向德国鬼子扫射确实挺畅快的。
ActiveRecord确实挺像MP40的,你不需要多复杂的步骤,装上弹夹,拉一下枪栓,然后见到敌人就开枪吧,一切都是那么的简单。建表、创建一个继承自ActiveRecord::Base类的子类,然后就是一些简单的CRUD的方法。当然,在ActiveRecord中你也可以充分发挥自己的创造力,用好find方法能省去一些手工构建SQL语句的麻烦。
不过从现在看来,ActiveRecord并不仅仅是一个Rails中的ORM框架了,它代表着一种设计方法学。许多动态语言的框架在朝ActiveRecord靠拢,在PHP中,有CakePHP和Zend Framework的DB库,在Python中,有Django的ORM组件,当然还有在Groove下跑的Grails。
我们喜欢冲锋枪,它用起来比较容易,而且火力不错。不过在对付更多的敌人时,你会觉得这把MP40的弹夹有点小了。
MG42 —— Hibernate
好吧其实我并不是很喜欢Hibernate,但是它确实很火,功能也很强大,所以我它让我想到了MG42(Machine Gun 42),一把德军在二战期间使用的机枪。当然,美军也有对应的武器:M1917 Browning Machine Gun。
MG42这东西属于支援型火力,在防守阵地时,架上一两杆这玩意,对进攻方来说确实非常棘手。这玩意火力强大,而且弹夹中的子弹够你打上一阵子,所以在压制敌人进攻方面非常有效,而且杀伤力也不弱。不过这玩意的弱点就是你得有两个人来操作,一个人瞄准、开火,另外一个人送子弹。而且你也不可能搂住扳机不放,这样你会发现子弹会满天飞,而且你也不知道这枪会打到哪里。
Hibernate确实很有一套,在应付复杂的企业级应用上很有优势,性能也不错。不过有时候对于简单的应用来说,它并不很方便。在使用Hibernate时,你需要写一个Bean,而且是贫血型的Bean,然后是一堆配置文件,不过有可能XML配置文件的代码比写一套完整的SQL语句都多。
总之Hibernate用好了不太容易,但是用好了之后,在多人协作的开发中会很方便管理。
作为程序员或多或少会有一些偏执,面对自己喜欢的东西总会毫不犹豫地去追捧,直到“穷途末路”也会在所不惜。其实我们应该思考一下,难道我们真的需要ORM吗?难道写程序必须要OO吗?诚然有些时候你不写出OO的代码会被别人鄙视,为了不被鄙视,我们会写一大堆接口、基类,然后是一些实现类,随之就是复杂的架构。当我们相信自己对复杂的掌控能力之后,复杂就逐渐蚕食着我们的效率。
有人会说:写程序就应该复杂,要不然不能体现我们的价值;又有人会说:写程序应该尽可能简单,这样我们就会很容易维护这个程序。当然,不同的言论会有不同人在追捧,但终究我们要知道程序的最终目的——不是复杂,也不是简单,而是能用。
多年来,我们一直在思考程序与数据库之间的交互,当OOP出现之后,ORM似乎是必经之路。有人在呼喊对象数据库,而我们还在使用着RDBMS。为什么呢?难道数据和程序这两者之间天然的矛盾?其实站在一个程序员的角度来看,似乎OODBMS更符合他们的价值观,而站在数据的角度来看,OO远没有表格直观。仔细回想一下,OOP跟表格哪个发展的时间更长?
其实我们应该放下偏执和成见,把精力放在写代码上,而不是争吵哪个ORM更好。其实使用JDBC;写SQL语句也并不是不可救药。
博文视点策划编辑:李雨来
博文视点新书销售快报
=====================================

上市一周,《开源技术选型手册》在互动网的销售排名一路攀升,历经56、51、22、16、11、7、6,截至今天,暂时定格于第5。
欢迎各位大侠多多关注,多多评论~~
http://www.china-pub.com/39918
会员名:caiyubao
本书的价值我觉得可以概括为几点:1是能够让读者在最短时间内对开源软件有充分的把握,以往花费半年甚至1年的时间才能了解到的内容,本书全部包括了;2是对每一个部分都是由相关领域的深刻经验的作者写的,除了简单平铺之外还包括了很多作者的思想,他们可以帮助开发者少走歪路,应该说电子社能有这样的选题是非常独到的。总体感觉是这本书有很大的参考价值,尤其是在基于开源软件的Java应用开发中,包括设计、开发、运行、维护、测试、项目管理等各个方面的内容。
发表于 @ 2008年06月30日 18:09:00|评论(loading...)|收藏