随笔-75  评论-193  文章-5  trackbacks-0

    最近在做一个很小的项目的功能改进,小小的项目中原来连接的是MySQL数据库,现在需要新连接一个数据库(Oracle),仅仅从一张表查询数据即可,没有添加、修改、删除等等功能。本来这个小小的项目中用的是Hibernate,现在又要增加一个数据库连接,觉得配置起来有点麻烦,忽然想起来,我干吗还要用Hibernate呢,直接用JDBC不也挺好使么,想了便做,果然写起JDBC来,很是快捷,一会就搞好了。

    做好了以后,忽然觉得有点迷茫,感觉不用Hibernate不也挺好的么,咱为什么现在开口闭口都是Hibernate呢,于是便有了今天的题目。

    很久以前没有Hibernate的时候:

    第一阶段:我们写程序都是直接用JDBC,甚至在JSP页面中直接去createConnection,然后执行查询,输出到页面。

    第二阶段:后来觉得每次都是创建一个连接,好像效率不高,于是看了别人的介绍,要用数据库连接池,好的,那便用数据库连接池吧,每次都从pool中获得一个Connection,然后查询数据。

    第三阶段:用了连接池,还是效率不高,那怎么办呢?用缓存吧,自己实现缓存?可以,也可以用开源的缓存框架。

    第四阶段:到了OO大流行的时代了,一切都要OO,恰逢Hibernate降临人世,于是一切都用Hibernate来实现了,其实同期还是有不少其它ORMAP框架的,比如(TOPLINK、JDO、IBatis等,IBatis国内用的还比较多,另外两个好像用的比较少)。

    第五阶段:忽然EJB大流行,事务的概念被广为传播(并不是原来没有事务的概念,只是实现起来比较麻烦),借助EJB的广为传播,Spring+Hibernate的组合也慢慢占据了大半市场。此时事务用Spring AOP的声明式事务来解决,缓存可以用开源的缓存框架(已经和Hibernate无缝集成了),数据库连接池也是通过配置的方式在SpringContext.xml文件中配置,貌似一切都很完美。

 

    真的到了第五阶段,一切是不是真的完美了呢,如果一个很小的应用,需要从好几个数据库查询数据,但是每个数据库仅需要查询那么一两张表的数据,偶尔添加、删除几条数据,数据量也不大,此时我们是不是还用第一阶段的方式会更好呢,好像有时配置多数据源也不是那么方便的事情。或者使用Spring中的JDBCTemplate,貌似也不错。

    再往后看,难道Spring+Hibernate的组合就天下无敌了么?难道就没有新的框架了么?前段时间,JavaEye上关于充血模型、贫血模型的讨论吸引了多少眼球,以后是不是会有这么一个框架用于实现充血模型呢?

   说了这么多,最终只是想说明白这么一句:用恰当的技术做恰当的事情,这真是一个艰难的选择……,至于未来,更是迷茫,因为我们只是跟随者,而不是领导者。

posted on 2009-07-06 22:06 The Matrix 阅读(2017) 评论(0)  编辑  收藏 所属分类: 随笔Hibernate