论坛首页 Java企业应用论坛

hibernate在新项目上应用的弊端

浏览 42039 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2011-04-26  
hibernate有它适合的应用场合,别幻想着能在所有的项目中使用
根据项目的具体情况来选择使用什么技术
0 请登录后投票
   发表时间:2011-04-26  
不要拿人家的短处来说人家不行好么。。多看看长处,适合就用,不适合拉到。
0 请登录后投票
   发表时间:2011-04-26  
感觉Hibernate还是很不错,但是从来都不敢用。
0 请登录后投票
   发表时间:2011-04-26  
复杂的sql,不能用hibernate,这样说也对,但是我认为可能我们写sql写习惯了,潜意识里觉得就应该这么做。但是hibernate是对象查询,而不是我们的sql查询。对象的出现是为了解决一些复杂的问题,那么我可以说复杂的查询,如果使用hibernat,那么就应该使用对象的观念,即多个对象组成一个复杂的查询,也即对复杂查询进行分解,分解成多个对象查询。这或许就是面向过程与面向对象处理的思维方式。
0 请登录后投票
   发表时间:2011-04-26  
说这么多可能大家没理解。
我的意思就是一个复杂的sql查询相当于一个过程,那么我们要用hibernate,我们就要用面向对象的方式来处理这个过程,显然处理的方式就是对整个过程多次分解以形成多个对象,这就是hibernate的面向对象查询。
0 请登录后投票
   发表时间:2011-04-26  
Tank03 写道
hibernate本身没有弊端.是因为用的不好才出现了弊端


不能这么说,任何东西都有双面性,有好的,有坏的。有时候他能满足你,有什么他不能满足你,要具体情况具体分析。据我所遇到的情况hibernate的弊病还是有一些的。

例如:
1.hibernate只能有一个**.hbm.xml。这就造成了对象需求的冲突,比如你查一个对象A,A对象下面连带立即查出3个对象B(这种配置可以达到),很显然,有人需要的查询只需要检出对象A即可,不需要对象B(但是这个配置已经固定了)这就造成了内存效率的浪费,ibatis应该不存在这个困难。

2.负责的缓存机制。haibernate为了提高效率,可以把很多对象缓存到内存中,这就存在DB实体和内存对象实体的同步问题,你想findbyid(int id)查出一个对象,然后再new 一个vo,vo.setid(查出对象的id),然后update,对不起,搞不进去的。(这里可能描述不准确),反正意思就是hibernate有自己的机制,这个机制能保证逻辑的一致,完整,一起都是为了同步DB,但是这些抽象的机制令人费解。

3.有的人java开发多了,老是用对象的眼光思考问题,hibernate符合这部分人的口味,因为hiberante就是很好的面向对象的。如果你再看看c++,perl开发的web,php开发的web,他们完全可以做到同样的效果。那么我们可以看出是面向数据库的开发,所有的程序是为了数据库服务。这样你可以充分发挥你数据库的能力极限,用数据库的过程,函数,索引等等。所以java面向对象就没有那么重要了。翻翻oracle优化的几个准则, 不要使用not in, 不要在索引上使用函数,连接表的时候选择好基表,这些hibernate可以做到吗,很难,或者是被忽略了。ibatis不存在这个问题,因为它的抽象程度没有Hibernate高,面向对象没有hibernate做的好!

事情的发展都是涨涨停停,此消彼长,不存在绝对的好,不存在绝对的坏,自己要思考一下,不盲从,有见地。刚开始我们学习的时候,老是要强迫自己学会这个,掌握那个,再看看别人招聘的简历,要求SSH什么的,内心的鸡血就沸腾了,对这些框架崇拜的五体投地,其实工作了一段时间,你自己感触多了,就可以得出本质的东西,也会对这些东西赞赏和不屑起来,以后能力强了,说不定你自己都可以做个框架,呵呵。希望牛人批评,指正!
0 请登录后投票
   发表时间:2011-04-26  
orm和rdbms本身思维方式和构建方法就很难完全一致,自然orm就不可能解决基于rdbms系统的全部问题
就像很多人想用plsql解决应用层的问题,但是sql和高级语言处理哲学就不一样所以也不可能解决所有app层的数据处理问题
0 请登录后投票
   发表时间:2011-04-26  
hql 由于不支持select后面的子查询,所以用来做动态列的时候还是有麻烦的、、、
0 请登录后投票
   发表时间:2011-04-26  
我检到一把屠龙刀。发现它杀猪根本不行,动不动就把猪劈个稀巴烂,杀人也不行,太重了,我还没举几下就没力气了。
0 请登录后投票
   发表时间:2011-04-26  
其实楼猪可以用ibatis,但是不要再抱怨ibatis。不过那也是你的自由。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics