日期:2014-05-20  浏览次数:20864 次

你们觉得HQL真的那么好用吗?Hibernate和ibatis有感
Hibernate貌似声势非常浩大,但我一直不是很习惯其HQL,既然有SQL,为何要搞个HQL。

作为和各种关系数据库相处多年的开发人员,个人对各种数据库的sql并不陌生.无论采用什么数据库,首先都是要设计表,然后设计各种增删查改的sql和存储过程,HQL貌似能屏蔽不同数据库SQL差异,但对数据库精细的访问和性能优化方面能达到数据库相关sql的程度吗?

在之前的几个项目中,我们采用的是ibatis,因为一般不可能在产品中使用不同数据库,所以不用怎么考虑sql语句跨平台的问题。倒是觉得HQL本身带来了一定的学习曲线,以及不如数据库本身的sql那么直观和直接。ibatis也是个非常不错的工具,完全能满足我们项目对数据库访问的要求,只是不知道和hibernate相比,有什么差异。

在网上偶尔也能看到HQL的一些小问题,如复杂查询,编码问题等。不知道各位长期使用Hibernate以及HQL的同仁们对HQL的客观看法如何,请不吝赐教。


------解决方案--------------------
sql看起来都差不多,但真是从一个数据库切换成另一个数据库时,就出现问题了.
像时间字符串\数据类型等等
Hibernate就是要解决这个问题.
如果你们开发的系统基本不上会改变数据库,只是使用ORM,Hibernate就没有太大优势.
------解决方案--------------------
我倒觉得国内的绝大多数所谓“迁移”不只是迁移数据,往往是整个应用的升级换代,数据库结构都要做很大变化的,此时hibernate的所谓跨数据库能力就是个摆设。
现在的数据库一般满足一般应用都没问题,谁没事就成天把用的好好的数据库一字不差的换个数据库平台啊?
------解决方案--------------------
主要还是开发速度.
数据库加字段什么的,整个后台代码简直一点都不用改
DAO定义一个基类,很多DAO都可以是空白的了,只要写业务层
------解决方案--------------------
我很是怀疑是否因为用了HQL,那么业务系统的持久层访问模块就可以完全不加修改的照搬过来
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
可以,不过要看设计水平,不会用hibernate用了比不用还痛苦,会用的有问题自己跟踪源代码任何问题都可以解决
------解决方案--------------------
很不幸,这几年做的项目很不专一,常换数据库oracle,msql,mysql等,基础模块都是同一套代码,数据库迁移的工作,就由hibernate做了...
------解决方案--------------------
hibernate这个设计其实挺差的,用OO的思想来思考关系数据库本来就是有点牵强,还要配置一堆的配置文件,有这个时间,早就把不同平台下的不同的sql写出来了。
哪个企业系统会天天换数据库玩啊,吃饱了撑的