中国开发网: 论坛: 程序员情感CBD: 贴子 295284
haitao
也来过反方向的:谁能告诉我Hibernate有何优秀之处?
谁能告诉我Hibernate有何优秀之处?
作  者: lllllllllluoyi (罗毅)
等  级:
信 誉 值: 93
所属社区: Java 非技术区
问题点数: 20
回复次数: 104
发表时间: 2006-3-9 20:10:14




进一个月来,我都在家里学习hibernate,这是因为社会上大多的公司都用它做数据持久化层,同事朋友都采它来完成公司的任务.我怀着十分崇敬的心情去学习hibernate.由于书籍都是网上下载的电子书,对于hibernate的讲解都不是很具体,基本上都是xml和持久化类的做法和实际WEB工程的运用.
我十分怀念类似于java核心技术详解的书,经过努力的寻找,终于找到了由飞思科技出版的"精通hibernate java对象持久化技术详解",作者是"孙卫琴".分析得比较具体.
学习完这本书,我深深地为自己提了一个问题,hibernate是不是我真正追求的技术?是不是仅仅为了找工作而使用学习它?不经地问,它有何优秀之处?
hibernate把数据库映射到类,每个类对应一个数据表,并为每个类配置一个.hbm.xml文件,用以控制持久化类.当然,也可以集中到一个xml文件中.在数据库里表的每一条记录将映射到一个类,检索后的数据集有N条记录,那么hibernate将创建N个持久化对象分别映射每一条记录.通过访问这些持久化对象达到获取数据的目的.经过这样的制作,开发者能感觉到是在做面向对象的数据库设计.如果熟悉oracle,应该知道oracle里的表是可以做成一个类,然后通过引用这个类的实例访问对象成员. hibernate有自己的一套检索策略,自己设计了几套数据访问语言,这似乎有点不伦不类. 当 hibernate检索数据时,都要转换为sql语句到数据库里去检索,在这个过程中,要为每个条记录建立一个持久对象,这样的内存开销是乎是太大了?以至于影响到程序的运行.数据表间存在着许多关系,hibernate在处理这个关系采用检索策略时,会向数据库发送多个SQL语句请求数据,如果数据表设计不合理,或者数据量很大,那么数据库将花费大量的时间来处理SQL请求,这将使客户端等待时间大大延长.
hbm.XML配置也是非分烦琐,特别是在表述表间关系时.表的关系在数据库里用视图表示,客户端获取这种关系相当于检索一个表,结果集存放到一个set集合中.而不需要建立表对应的持久对象.在没有接触hibernate时,我以为每个表的数据都存放在一个类里,类里的数据使终跟数据表保存一致,我们操作数据时只需要访问类,而类与数据表的交互不需要动作呼应.事实上hibernate并不是样的,当用find或者getXXX时,它根据配置文件组织成SQL到数据库里去取数据.这样使我觉得它并不优秀.
谢谢大家跟我讨论一下.



lianyang97(大海孤舟) ( ) 信誉:84 2006-3-9 20:22:10 得分: 0



最大的好处就是可以出去吹牛,而且现在不会这东西没人要!



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-9 20:53:36 得分: 0



我不由想起在CSDN里看到关于pascal之父的文章,程序就是简洁.



Top
wwwtom(兰色风暴) ( ) 信誉:95 2006-3-9 20:54:49 得分: 20



象楼主这种人就是告诉你好处,估计你也听不董




Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-9 21:27:36 得分: 0



to:wwwtom(兰色风暴) ,请放尊重.你听不懂,你不用回答,只能增加我对你的看法.



Top
woolceo(Wool) ( ) 信誉:100 2006-3-9 21:41:13 得分: 0



我不知该如何表达...

这么说吧...ORM就是将数据库也面向对象化...

其实对于楼主说的繁琐,,,我反而不觉得...可能是楼主没用IDE的缘故吧...



Top
treeroot(旗鲁特) ( ) 信誉:106 2006-3-10 9:02:08 得分: 0



我觉得hibernate没有什么动人的地方,小项目可以使用!



Top
sbgphl(十八哥) ( ) 信誉:100 2006-3-10 9:12:05 得分: 0



最大的好处就是可以出去吹牛,而且现在不会这东西没人要!
基本同义这个观点



Top
dlxu(Coding超过了10W行) ( ) 信誉:114 2006-3-10 9:14:31 得分: 0



至少把一个父子关系的表读出来并且包装成一个对象的时候不用写那么多rs.getString("XXX")了



Top
hanml(find lost) ( ) 信誉:96 2006-3-10 9:16:08 得分: 0



可以和JDO比较下再看看



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 10:15:35 得分: 0



如果说resultset这么多getString等等获取数据很麻烦,其实在使用持久类的时候也要用getXXX或者setXXX方法。我觉得这种设计也很合理,get,set等方法很简洁,这些并不是什么大的麻烦。我只是觉得这个框架的设计很累赘,当访问数据的时候需要通过持久化类组织成SQL到数据库里检索,而且在有关系的检索会请求多条SQL,返回的数据集要建立成N个持久对象。如果有上万条记录,那么在内存里就会建立上万个持久对象,这是一笔不小的内存开销。
如果没有hibernate这层,用resultSet获取有关系的数据,表间的关系在数据库可以做成视图,resultset只需要调用这个视图。



Top
zcjl() ( ) 信誉:144 2006-3-10 10:37:52 得分: 0



如果有上万条记录,那么在内存里就会建立上万个持久对象,这是一笔不小的内存开销。
--------------------------

难道直接使用jdbc的方式,就不需要保存上万个数据对象了么?
这个根本与是否hibernate无关



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 11:00:26 得分: 0



hibernate是建立在jdbc之上的,已经为数据分配了内存空间,而又需要为分配持久对象的内存空间,这难道开销不大....吗?除非hibernate实现了jdbc的规范,做自己的数据库连接驱动。



Top
zcjl() ( ) 信誉:144 2006-3-10 12:07:10 得分: 0



lllllllllluoyi(罗毅) ( ) 信誉:93 2006-03-10 11:00:00 得分: 0


hibernate是建立在jdbc之上的,已经为数据分配了内存空间,而又需要为分配持久对象的内存空间,这难道开销不大....吗?除非hibernate实现了jdbc的规范,做自己的数据库连接驱动。


那如果不用hibernate,你又如何实现?直接把resultset返回给页面进行数据读取么?
否则,你还是得有一个从resultset中获取数据,并生成对应数据结构的过程,照样消耗内存空间



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 12:16:45 得分: 0



resultset在逻辑层实现,返回给页面的数据并不是resultset整个数据集合。
hibernate是建立在jdbc上的,resultSet是jdbc规范里的标准接口,每种数据库与java的数据交互都要遵守jdbc规范,所以hibernate的内部已经调用了resultSet等接口来满足持久类。
访问数据:
1.DB---->jdbc--->逻辑层
2.DB---->jdbc--->持久化--->逻辑层
这样的访问方式我就觉得累赘。



Top
wtjd() ( ) 信誉:100 2006-3-10 12:31:42 得分: 0



O/R mapping 本身就是这样的,
你可不用O/R Maping,用JDBC还不是可以,关键看hibernate是否适合你的项目。



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 12:40:17 得分: 0



忠心地请教一下,hibernate一般用于什么项目上,hibernate的项目经验我很缺乏,我也想对它有很好的认知。



Top
duye(Kill_U) ( ) 信誉:99 2006-3-10 13:04:41 得分: 0



很不明白hibernate是什么东西,看了孙的那本书,除了行文不错,比较容易懂以外,技术没有什么东西。



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 13:21:44 得分: 0



希望大家跟我多交流一下。




Top
treeroot(旗鲁特) ( ) 信誉:106 2006-3-10 13:27:22 得分: 0



使用jdbc转入hibernate不会有什么令人激动的地方
但是使用惯了hibernate后再直接用jdbc令人难以忍受。



Top
TinyJimmy(Jimmy) ( ) 信誉:105 2006-3-10 13:52:20 得分: 0



Hibernate和EJB/JDO差不多, 只是一个OR/Mapping的工具而已, 他们的优点和缺点都非常明显. 缺点不说了, 楼主已经列出很多. 优点就是能够将业务分层实现, 按EJB的说法, 就是SessionBean和EntityBean, SessionBean负责业务逻辑, EntityBean负责存储, 当底层的数据结果发生变化, 不需要影响业务逻辑开发. Hibernate开始只是实现EntityBean的功能, 后来因为效率等问题, 增加了XQL等乱七八招的东西, 反而背离原有Entity的本意. 成了Entity+Session的怪胎.

应该说设计本意是好的, 理想的. 可是要求使用者非常精通设计模式, 以及面向对象的设计, 所以能使用好的人不多, 大型应用又快又稳定的就更加少了(到目前偶还没见过).

JDBC比ORM工具速度快, 理论上ORM又比JDBC具有更好的维护性



Top
javalin3012(创薪型人才) ( ) 信誉:100 2006-3-10 14:17:00 得分: 0



iBatis是一个功能强大的,非常有用的SQL Map工具,不同于ORM工具(如hibernate),它是将SQL语句映射成Java对象,而对于ORM工具,它的SQL语句是根据映射定义生成的。
iBatis和hibernate各有用途,如果你开始一个新的项目,对于领域对象模型和数据库设计拥有完全的控制权,hibernate是一个很好的ORM工具。
但如果你要访问一个第三方数据库,或使用一个已有系统的数据库,或是一个设计很糟糕的数据库,ORM工具很难应付由此带来的复杂性。在这种情况下,iBatis就非常有用。
还有,如果你的开发小组熟悉面向对象的开发模式并熟悉hibernate,你可以使用hibernate。而如果你的开发小组只熟悉SQL,并且不熟悉hibernate,建议你使用iBatis,毕竟使用iBatis要简单得多。只要熟悉SQL,会使用XML,即可使用iBatis,而使用hibernate,需要熟悉hibernate特有的查询语言HQL,虽然也比较简单。



Top
shockely(梦想的天空) ( ) 信誉:100 2006-3-10 15:03:56 得分: 0



Hibernate会约束数据表的设计,这种约束对有些人是一个阻碍但对有些人却受益非浅,为什么这么说呢,因为Hibernate可以让很多人在设计数据库时多多考虑数据表结构的设计避免很多人设计表时不设计主键之类的低级错误,当然对于数据库高手来说根本不会出现这种问题。对于楼主所说的妨碍数据库设计,“假如数据库设计不合理”之类的话,我看楼主要反省下自己为什么会设计不合理呢,是不是自己不适合这方面呢?无论JDBC还是Hibernate的查询对于数据库的设计合理性要求都很高,Hibernate为了适应各种查询方式提供了多个方法,开发人员可以根据具体需求使用各个方法,具体可以根据后台打印的执行SQL语句来选择具体方法,这样完全可以避免多余的SQL请求。至于当查询上万条记录要生成上万个持久化对象消耗大量内存,这种缺点JDBC也无法避免;楼主可能会说“至少JDBC提供了ResultSet接口可以一条条遍历不需要立刻分配内存”,我可以告诉你Hibernate也实现Iterator接口可以逐条遍历。
Hibernate框架的低层是从JDBC实现过来的,性能肯定不如JDBC,但是Hibernate提供多种缓冲策略在性能上可以提高很多,如果有人愿意自己花大量的时间去实现缓冲机制那我没话说,Hibernate性能的确不如JDBC,至于自己实现缓冲对性能的提高和稳定性到底比Hibernate高多少,我持保留态度。对于开发效率上我可以很肯定地说要高非常多。
Hibernate这种缓冲机制和对开发效率的提高决定越是复杂的系统越能体现其价值,比如在多表关联中Hibernate只要一个save或update方法就能完成多张表的数据更新,还有其他更多优美的设计可以自己的挖掘。当然Hibernate的优点很多但也有很大的缺点,即使Hibernate提供这么多种查询方法但是其在查询方面的功能还比较弱不能和传统的JDBC编程相提并论,因此Hibernate不适合应用与报表之类的纯复杂查询的系统中。



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 16:59:19 得分: 0



刚刚看了各位的意见,都说得很中肯。我很感谢。
即使他有自己的缓冲策略,但我对hibernate的运行效率持保留态度,如果方便了程序设计员,而没有方便用户,我想这个框架并不优秀。其实我最大的观点就是数据访问速度,在我做过的项目中,存取大量数据的速度的问题一直是困扰着我,我们设计人员为优化数据库费尽心机。只要速度能够有优秀的表现,对于其它麻烦都是可以接受的。



Top
shockely(梦想的天空) ( ) 信誉:100 2006-3-10 17:37:24 得分: 0



我说的Hibernate性能不如JDBC,只是因为是上下继承关系有部分性能损失,但并不会差很多比起数据库连接来说可以不用在乎。现在我明白楼主是为了速度而困惑,对速度产生很大的怀疑,那楼主还是使用JDBC吧,处理的好绝对要比Hibernate快一点的



Top
shockely(梦想的天空) ( ) 信誉:100 2006-3-10 17:45:08 得分: 0



处理到最后可能就是另一个Hibernate了,对于复杂的应用系统各种类的封装是不能避免的,否则各位不如直接用汇编写程序好了,不用任何封装



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 17:48:36 得分: 0



这次讨论非常成功,我自己受益非浅,也对hibernate的了解更增进了一层。



Top
airc(淡紫花江) ( ) 信誉:100 2006-3-10 17:54:18 得分: 0



个人认为, 处理日常的事务, 利用libernate是足够了的.

但是处理大量的数据的时候, 估计有点紧张. 例如进行多维的查询分析的时候 可能不太适用

而而



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 17:54:47 得分: 0



合理的封装是应该的。但如果封装给程序带来了复杂性,灵活性,简洁性等问题,那这种封装就应该被否定。最近在csdn里看了pascal之父的文章,给我最深的就是程序的简洁性。



Top
k3179(螃蟹) ( ) 信誉:100 2006-3-10 18:00:17 得分: 0



速度和工作量,不能兼得的



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-10 18:07:14 得分: 0



hibernate的灵活度也是有限的,特别在处理表关系时,在实际的工程中,多表间的关系是非常平凡的,有时参与这个关系有四五个表(如果表设计很精简,一个表分成两个表来存储数据)。hibernate在处理这些关系时,需要为每个持久化类建立关联的持久化类的实例对象,无疑会带来设计的麻烦,这种工作将花费一定的开发时间,对于开发者来说,这很烦琐。对于程序运行效率来讲是致命的。这也是hibernate不可回避的缺点。



Top
Saro(三生) ( ) 信誉:100 2006-3-10 18:16:12 得分: 0



既然为速度担心,那就用iBatis好了,在查询效率和数据封装上有很好的平衡点。



Top
best_threewood(三木) ( ) 信誉:100 2006-3-10 18:31:40 得分: 0



马上要学习hibernate,关注.



Top
zengxftm(rainbow) ( ) 信誉:100 2006-3-10 18:36:21 得分: 0



学了hibernate就真能找到一个好工作吗?



Top
fuwang(相看两不厌,只有扶王山) ( ) 信誉:100 2006-3-10 20:16:36 得分: 0



这东西高手不用,低手用不好.



Top
dlxu(Coding超过了10W行) ( ) 信誉:114 2006-3-10 20:18:12 得分: 0



不要指望靠学某一个个别的技术找个好工作,最重要是提升自己的能力,把人家设计的思想都掌握了,那你自然好工作就来了



Top
ton2010(我想学好J2EE上海的菜鸟) ( ) 信誉:100 2006-3-10 20:40:33 得分: 0



同城博客月Top20 [上海] --------排名第3-------

1.
2.
3 天使的愤怒 ton2010

20.


http://www.blogcn.com/user89/oliver2010/index.html


《爱我还是他》


两个男孩,爱上了同一个女孩。
一个男孩,叫一凡,他桀骜不驯,我行我素,孤芳自赏,惟我独尊,敢做敢为。
另一个男孩,叫子昂,他稳重踏实,成绩优秀,性情温和,安分守己,沉默寡言。
这个女孩,叫倾城,她沉鱼落雁,清新可人,楚楚动人,似诗如画,气韵轩昂。

大一的时候:
一凡,因为擅自整改校广播台的体系框架和内容,被老师逐出广播台。
子昂,因为学习认真踏实,获得校奖学金一等奖,被老师选为学习委员。
倾城,成了子昂的朋友。

大二的时候:
一凡,因为不满校辩论赛内的黑幕,作为学院最佳辨手的他,毅然退出决赛,导致本学院在校总决赛中,以3:4输了总决赛,最后被剥夺学院最佳辨手称号……
子昂,因为为人踏实本分,听从老师安排,工作负责,被评为校优秀干部,优秀团员。
倾城,成了子昂的好朋友。

大三的时候:
一凡,因为不满团委总书记,对社团部内,官官勾结,弄虚作假,串改社团评分分数的无动于衷,作为计算机协会会长的他,毅然辞职……
子昂,因为妥善处理了学生会干部集体退出的事件,并给老师出了“金点子”,被老师选为校学生会主席,预备党员。
倾城,成了子昂的女朋友。

大四的时候:
一凡,因为出色的文采,被榕树下网站聘为专栏作家;因为在淘宝网的生意火爆,作为钻石卖家的他,月收入近万;因为在程序员大赛上的二等奖,被某著名IT公司提前录取;
因为在全国创业大赛上的得奖得一项发明,被某厂商买断专利权;因为……
子昂,因为在全国英语六级考试中作弊,被学校留校察看一年;因为串改学习成绩、奖学金评分表,被老师开除学生会内一切职务;因为这一切的一切,他失去了预备党员,失去了校优秀毕业生,失去了……
倾城,离开了子昂。

朋友告诉倾城:
你知道吗?
大一时,一凡被老师逐出广播台,有多少人联名上书挽留他吗?有多少人写信说喜欢他的广播风格,喜欢他的诗词文赋,喜欢他的诙谐幽默,喜欢他的……
大二时,一凡退出校辩论总决赛,被剥夺学院最佳辨手称号后,有多少人要他的签名?有多少人写信说喜欢他的刚正不阿,喜欢他的光明磊落?有多少人告诉他:他们心目中的冠军、校最佳辨手是他……
大三时,一凡辞去计算机协会会长后,有多少人因为他,毅然跟随他的脚步,辞去学生会副主席,辞去学习部部长,辞去社团部副部长,辞去……
泪水,在倾城的眼眶里打转……





http://oliver2010.blogcn.com


《可不可以不爱我》

我真的没有办法,像你爱我,那样地爱你,我很努力了,可是我还是做不到;

我真的没有时间,像你想我,那样地想你,我很用心了,可是我还是做不到;

我真的没有勇气,像你为我,那样地为你,我很尽力了,可是我还是做不到;

我真的没有能力,像你疼我,那样地疼你,我很用情了,可是我还是做不到;

我真的没有把握,像你给我,那样地给你,我很拼命了,可是我还是做不到......



:全部档案文件:
※全部档案文件※

· 《可不可以不爱我》 [原] (发表于2006-2-22 19:09:40)
· 《可不可以不爱我》 [原] (发表于2006-2-22 19:09:40)
· 《爱我还是他》 [原] (发表于2006-2-21 20:21:28)
· 《从来不敢这样地爱你……》 [原] (发表于2006-2-20 22:51:20)
· 《 你为何如此地爱我 》 [原] (发表于2006-2-16 14:40:13)
· 没有情人的情人节 (发表于2006-2-14 16:54:14)
· 《你知道我在等你吗……》 (发表于2006-2-14 16:51:57)
· 《贫穷》 (发表于2006-2-14 16:49:26)
· 《幸福》 (发表于2006-2-14 16:48:13)
· MOTHER (发表于2006-2-13 11:59:41)
· 《一只披着狼皮的羊》 [原] (发表于2006-2-13 11:58:36)
· 《我曾经那样仓惶失措地爱着你……》(续II) [原] (发表于2006-2-13 11:58:27)
· 《我曾经那样仓惶失措地爱着你……》(续) [原] (发表于2006-2-8 15:15:23)
· 我不是我 (发表于2006-2-4 18:27:29)
· 为了忘却的记忆 [原] (发表于2006-2-4 18:26:23)
· 《我曾经那样仓惶失措地爱着你……》 [原] (发表于2006-2-3 13:15:57)
· 不要认输-----------------让我感动的留言 (发表于2006-2-2 17:04:55)
· 为了要得到幸福-----------------让我感动的留言 (发表于2006-2-2 17:00:04)
· 为了与你相遇-----------------让我感动的留言 (发表于2006-2-2 16:52:44)
· 不能没有你-----------------让我感动的留言 (发表于2006-2-2 16:44:03)
· 无与伦比的你 [原] (发表于2006-2-2 16:36:07)
· 好人坏人 [原] (发表于2006-2-1 17:36:35)
· 当局者清旁观者迷 (发表于2006-2-1 17:35:12)
· 幻想人生 [原] (发表于2006-2-1 17:30:59)
· 执迷不悟 [原] (发表于2006-2-1 17:28:07)
· 收放感情 [原] (发表于2006-2-1 17:24:11)
· 放爱生路 [原] (发表于2006-2-1 17:20:33)
· 爱情赌注 [原] (发表于2006-2-1 17:17:10)
· 太想爱你 [原] (发表于2006-2-1 17:15:15)
· 回忆似酒 (发表于2006-2-1 17:10:51)
· 多情剑客无情剑 [原] (发表于2006-2-1 17:07:11)
· 《人民与官》----群众如是说 (发表于2006-2-1 17:07:00)
· tears from the torn heart (发表于2006-1-31 17:25:30)
· Happiness [原] (发表于2006-1-31 16:40:10)
· 愿赌服输 [原] (发表于2006-1-31 14:04:13)
· 花太香 [原] (发表于2006-1-31 14:02:07)


http://oliver2010.blogcn.com

《从来不敢这样地爱你……》

从来不敢正眼,看你的眼神,因为我怕你那期待的目光中夹杂的疑虑;

从来不敢闭眼,在你的怀里,因为我怕你那温暖的胸怀会瞬间地冷却;

从来不敢奢望,在你的心里,因为我怕你那驿动的心扉会无情地关闭;

从来不敢吻你,在你的嘴间,因为我怕你那深情的吻会是最后的吻别 ......






Top
SteveGYCN() ( ) 信誉:100 2006-3-10 21:40:32 得分: 0



如果你熟悉SQL语句,应用程序也需要复杂的、最优化的查询(这几乎是一直需要的),还是建议使用iBATIS,这个框架提供Mapper和Data Access两种方法,后者可以兼容Hibernate,这个库的灵活性和简单配置特性,支持Dynamic SQL的能力,以及非集群的数据缓存能力,都是编写复杂的、可控制的SQL应用程序所必需的。
在大型项目、团队开发的过程中,可以把iBatis的SQL层编写交给专门的小组来完成。可以自己编写一些简单的CRUD操作的代码生成程序(这样的程序甚至可以在Excel中用VBA来写),用于生成简单实用的单表操作基础代码,可以提高编码效率。
事实上,hibernate的原意,就是为了在程序中不写SQL,因为hibernate的创始者偏执的认为,“SQL是丑陋的、难以理解的”。如果开发团队真的认为SQL编写是“令人厌恶的”的事情,那你们还是使用hibernate吧:)
我除了认为select 的语法顺序不太符合人的思维方法以外,其他都还可以接受,LINQ查询语法的改进,就是为了所谓的Human thinking,呵呵,说个笑话。



Top
zncn2(embedded system) ( ) 信誉:100 2006-3-10 22:06:00 得分: 0



mark



Top
shendl(良少) ( ) 信誉:79 2006-3-10 22:50:23 得分: 0



楼主, 看来你真的不懂 面向对象 编程 啊!

如果要讲程序运行效率,那用汇编去写好了!
我想,楼主可能是个学生吧,还没进过正规公司工作过吧!

Hibernate是目前世界上最好的O-R Mapping工具。 当然,有些小项目,我也不用Hibernate,直接用JDBC算了。 但是,我用JDBC也是面向对象方式的。
只是运行性能可能会比Hibernate高一点罢了。
但编程肯定比较烦!

我就搞不懂了,这样一个帖子,居然要放在首页置顶! CSDN的编辑,都是什么水平啊?!网站做的又烂! 真是晕死!




Top
mingxuan3000(铭轩) ( ) 信誉:100 2006-3-11 1:01:29 得分: 0



mark




Top
LeadWorld(夕霞孤雁) ( ) 信誉:100 2006-3-11 1:06:09 得分: 0



MARK



Top
wwwtom(兰色风暴) ( ) 信誉:95 2006-3-11 1:22:50 得分: 0



这样的水平,根本没法讨论,看了半天发现楼主说的没有一句是正确的,这种人还敢出来讨论,自己在家多看几本书,就知道自己多幼稚了,不好意思,我就是说话比较直!



Top
ucme(边城毛毛) ( ) 信誉:100 2006-3-11 2:13:00 得分: 0



我基本都看完了上面所有人发的回复,仔细看了一些网友提的观点。其实大家的观点都是基于大家个人的经验总结出来的,当然了,这可不包括那些灌水的高手。
HIBERNATE,一种O/R MAPPING框架,从一开始的婴儿发展到现在,已经是到了3.X;从原先的JAVA平台移植到.NET平台。不可以否认的是,HIBERNATE架构是越来越完善、越来越大。她出现的目的,是为了可以让我们这些写代码的,可以更集中精力处理业务代码,而不是把心思放在怎么构建SQL语句。
大家不知道是否有这种感觉,在还没有O/R MAPPING之前,我们在团队开发的时候,实现一个业务逻辑前的事情,就是跑去问DBA或者找系统的数据库字典,要先把这个逻辑所用到的字段类型、大小、约束都搞清楚,才能开始做编码工作,因为我们需要构建特定的SQL语句、在代码放入各种的逻辑判断……
在有了O/R MAPPING之后,这种现象才得到基本解脱,因为我们要操作表里的数据,只需要直接对映射类操作即可,O/R MAPPING会自动生成所需要的SQL语句……
实现了O/R MAPPING的软件有很多,商业的、开源的都有。上面有些人也提到了,EJB也是其中一种。但因为EJB的各种陋习:写配置文件(JDK5支持用ANNOTATION进行标记)、实现两个接口……搞了大半天,居然没有一行是处理业务逻辑的代码(如果个别程序员不同意,请要了解这是我个人的真实感受,没必要辩驳我的话),所以现在越来越少软件开发商采用EJB了,除了一些遗留系统外,对于一个全新的系统设计,架构师一般都不使用EJB了,而改用更为轻量级的框架,HIBERNATE一般是首选,因为这个框架对系统的侵入性不大,因为HIBERNATE是采用IOC机制的(SPRING同样是采用IOC机制,具体是什么,请自行查阅资料,这里不作详细解答),这对于一个系统来说,这种侵入性不大的框架,对于日后的维护,甚至更换另一个O/R MAPPING软件成为可能。
对了,外提一个题外话,HIBERNATE的作者,已经被SUN请去制定EJB3.0的工作了,相信EJB3会为大家带来一个全新的感受。



Top
ucme(边城毛毛) ( ) 信誉:100 2006-3-11 2:19:51 得分: 0



对了,至于HIBERNATE适用哪方面的开发,这个问题可真难倒我了,因为只要与数据库打交道,而HIBERNATE提供相应的适配,都可以用HIBERNATE。
只不过因为她生成的SQL语句,并不是最高效的,所以在一些需要频繁与数据库通讯的系统,就不适合使用了,因为无论是什么数据库,在写记录的时候,都会有锁机制的,一旦这些系统用HIBERNATE的话,绝对是会产生数据库的IO阻塞。这种情况就需要自行构建SQL语句,来尽可能的避免这种情况的发生,或者减少这种情况的发生。



Top
ucme(边城毛毛) ( ) 信誉:100 2006-3-11 2:38:22 得分: 0



对于楼主,我想提几个意见,不知你是否中听:
1、正如上面的一些朋友说的,你才刚接触HIBERNATE,就说HIBERNATE这怎么样、那又怎么样的,其实我敢打包票,你应该学得不咋的。学东西可不是一朝一夕就能学好的,要有个慢慢过渡的过程。所以需要我们耐下心,静下来才能学进去;
2、其实HIBERNATE在世面上已经有好几本书出版了,我不明白你住的地方是否真的那样,要你找了很久才找到。如果真的那样,你应该到网上找资源,这是最直接、最快捷方法,得到的知识当然也是最全面的了;
3、以后多做一些项目,看你发表的东西,就知道没做几个项目的,做过项目的,都对自己写getXXX和setXXX会产生一种无奈感觉,因为那是在没有O/R MAPPING的时候,必须做的事情。写多了,人都会变麻木。
以上全是个人见解,如果不同意,权当是我说废话好了,爱听不听的,由你。不过可别又骂人了:)



Top
lonelybug(孤独虫子) ( ) 信誉:98 2006-3-11 7:31:10 得分: 0



感觉现在的持久化问题,只不过是从relational database 向真正的 OO database的一种过渡,而大家,太多的跟随,反而被淹没在这种过程中而看不见最中我们要的什么!

因为最早的软件工程是分析关系和数据流来进行系统分析,而现在OOP的出现,人们不得不把很多关系数据库中的数据作兼容的方式,用OO database来处理。

个人感觉,现在的持久,其实,说白了只不过是基于relational的一种转换,并没有做到真正的直接binary的OO data操作。也许我说的,我自己都不明白,但是,我只是从我的观点,说一下现在的现状而已。哈哈!



Top
jeremydomett() ( ) 信誉:100 2006-3-11 9:26:56 得分: 0



感谢大家的讨论..
我对hibernate 又有了新的认识..



Top
jfy3d(剑事) ( ) 信誉:98 2006-3-11 9:35:21 得分: 0



HIBERNATE 思想还不错的东西 接触了点

觉得做(对运行速度没大要求的)中大项目可以,需要有方便的IDE
经过的步骤多了肯定慢 网上看到有人测试 HIBERNATE 比直接JDBC慢了2.5倍

我一直想用一下HIBERNATE 一直没机会
一直一来做的东西SQL都比较复杂 多表联合加嵌套和不定条件查询
记得做一个多表动态列交叉报表,拼出了几千字的SQL

对于RS 我有自己的封装
http://www.blogjava.net/jfy3d/archive/2005/05/12/4185.html
也是自动化的不需要用setXXX这样的BEAN,直接用hashmap,省了反射来赋值
所以不想直接用RS的不光HIBERNATE可以 还有我这个^_^

insert update 也有自己的封装
http://www.blogjava.net/jfy3d/archive/2005/09/11/12681.html


不过我不认为面向对象就优秀
这个世界这么复杂,怎一个面向对象了得




Top
orrin(orrin) ( ) 信誉:98 2006-3-11 9:50:14 得分: 0



其它的我不知道,但对于HIBERNATE 和JDBC效率,做过测试,两者差距很大,后者大大高于后者,所以选择时要在其优点大于缺点时使用。



Top
orrin(orrin) ( ) 信誉:98 2006-3-11 9:50:48 得分: 0



错了,是后者大高于前者



Top
njbaige(白鸽) ( ) 信誉:100 2006-3-11 10:09:02 得分: 0



不管怎么样,还是要顶一下~



Top
Godball(贵球) ( ) 信誉:99 2006-3-11 10:10:16 得分: 0



Using Hibernate is just like using any other RAD tool. In simple applications, you get very good performance for very little programming; however, if you want or need to take full control over the data access layer of your application, you may find that Hibernate is simply too slow. It is not a fault of the framework itself; it is just that sometimes the queries to build the objects defined in the mapping files are simply too complex.



Top
yeno(失业中,期待网站技术管理方面的活儿) ( ) 信誉:100 2006-3-11 10:51:25 得分: 0



Hibernate 其实是一种思想,它大量用到了XML和Java反射技术,我们更需要学习的是其中数据封装的编程思想.

在Hibernate项目中,一种自然的数据库过滤转换机制成为可能,因为对于不同的Database,他们的SQL查询语法都有细微的差别,而Hibernate正是将数据库的底层操作彻底剥离开来,让你不必要去考虑每种数据库的具体实现,这对于特别是对数据库涉嫌不深的同志们来说,是一个莫大的福音.

不知大伙用过PowerDesigner没有,现在这类统一调度的工具都非常流行,你只要掌握它,就可以简单的设计各类数据库框架,当然,如果你要设计一个性能非常优秀的框架,就必须对具体数据库有细微深入的了解了.

而目前的情况是,用统一工具设计出来的系统,基本上可以满足大部分中小型项目的需求,比如像51job这样的系统都不会有什么问题的



Top
acsharplover(斜阳) ( ) 信誉:98 2006-3-11 11:00:24 得分: 0



觉得JAVA社区的东西实在是太多了,实在搞不懂会有O/R mapping这个垃圾概念并衍生出了诸如hibernate这个怪胎。OO本身是以概念角度描述这个世界的,为了实现这个目标导致了性能的缺失。DB应用开发本来就是性能要求很高的领域,怎么可能把这套东西应用到这里???这种垃圾框架只能用在学生的论文作品中!虽然很欣赏JAVA优美的OO能力,但是其他方面和C/C++比起来还是很幼稚~



Top
killme2008(zane dennis) ( ) 信誉:96 2006-3-11 11:18:01 得分: 0



楼上那位
JAVA的本意就是以性能换效率,纯粹的OO能力+内存回收带来的是开发效率的大幅度提高.
您的那种口气让人无法接受




Top
688wl(688wl) ( ) 信誉:98 2006-3-11 11:24:11 得分: 0



hibernate给了我们曾经jdbc的解脱,spring给了我们整合的清新,这一切都己经是不争的事实了,居然还会有这么多的争议,真是不想再说些什么了,如果你连敢于尝试新技术的勇气都没有,或者只是还不是很了解这门新技术的本质时就大谈特谈,那你在今天技术纷杂的J2EE的世界里,永远只是门外汉,干脆回到JSP时代得了,或者离开JAVA去拥抱.net去吧

有时间看看J2EE的入门级框架,相信这里的有些人会被折磨死,里边包括时下多种技术,webwork,struts,hibernate,spring,acegi security,dwr,tag,sitemesh,AOP......





Top
688wl(688wl) ( ) 信誉:98 2006-3-11 11:32:46 得分: 0



有时间看看J2EE的入门级框架appfuse,相信这里的有些人会被折磨死,里边包括时下多种技术,webwork,struts,hibernate,spring,acegi security,dwr,tag,sitemesh,AOP......




Top
strutsdbk(你幸福我快乐) ( ) 信誉:95 2006-3-11 11:37:54 得分: 0



如果Hibernate 不行.那.NET 就不值得一提.
Hibernate 比 ADO.NET 起码强几个数量级.

所谓Hibernate ,就是面向关系型数据库的数据持久化解决方案.
是继 EJB,JDO 之后一个非常优秀的,并且简单实用的解决方案.
它的代名词:轻量级.



Top
xiaofeng3385(day day study) ( ) 信誉:100 2006-3-11 11:45:44 得分: 0



学习一下



Top
andycpp(幻瞳) ( ) 信誉:100 2006-3-11 12:13:10 得分: 0



mark



Top
cm4ever(单细胞生物,亩产三万斤) ( ) 信誉:102 2006-3-11 12:33:46 得分: 0



首先,趁此帖还在首页,bs放它上去的csdn编辑。

其次,bs楼主。自己不行就怪工具。

这张漫画比较适合你这种态度。
http://ars.userfriendly.org/cartoons/?id=19980506
图1,左:你有没有给Niffle先生打电话,关于他的连接问题?右:有。
图2,左:那分析结果是?右:经典PEBKAC问题。
图3,左:PEBKAC?右:键盘和椅子之间存在的问题。)

这就像买了达芬奇的画笔然后报怨自己还是不会画画。画家的技巧才是成就名作的关键,画笔本身创作不了蒙娜丽莎,它只是一个依赖使用者技巧的工具。而这种技巧必须通过练习才能获得。

有兴趣的人可阅读全文。
http://www.ubuntu.com.cn/lnw



Top
infowain(infowain) ( ) 信誉:100 2006-3-11 12:35:24 得分: 0



hibernate太麻烦了,简洁性方面需要向ROR学习



Top
acsharplover(斜阳) ( ) 信誉:98 2006-3-11 14:04:55 得分: 0



很赞赏楼上这位兄弟的观点!

lonelybug(孤独虫子) ( ) 信誉:98 2006-03-11 07:31:00 得分: 0


感觉现在的持久化问题,只不过是从relational database 向真正的 OO database的一种过渡,而大家,太多的跟随,反而被淹没在这种过程中而看不见最中我们要的什么!

因为最早的软件工程是分析关系和数据流来进行系统分析,而现在OOP的出现,人们不得不把很多关系数据库中的数据作兼容的方式,用OO database来处理。

个人感觉,现在的持久,其实,说白了只不过是基于relational的一种转换,并没有做到真正的直接binary的OO data操作。也许我说的,我自己都不明白,但是,我只是从我的观点,说一下现在的现状而已。哈哈!






Top
xinggg(风之渡) ( ) 信誉:100 2006-3-11 15:10:35 得分: 0



我来支持一下楼主,哈哈,
首先,我不觉得这个放到首页上有什么错,这类讨论有什么错么?难道放首页上的非得是相对论之类一般人要仰着头才看得到的问题?
其次,学一样技术,当然是要抱着怀疑的态度去学了,这样才更能发现优点和不足之处,才能加以改进.人家说好就当宝,把什么缺点都当优点,容不得别人提一点异议,动不动就乱扣帽子,把自己当成百年难遇的天才,或是与地球人缺乏沟通能力的外星人,其实你还不就是十几亿人渣里的一个?



Top
cyouyou(.( ̄. ̄メ)╭∩╮..) ( ) 信誉:100 2006-3-11 16:24:09 得分: 0



这样的帖子不应放在首页

1、Hibernate真正的目的是面向对象的数据库
2、当需要一次性从数据库读写上万条记录、或者一次性从文件读写上万条记录,就不应该用java



Top
killme2008(zane dennis) ( ) 信誉:96 2006-3-11 17:54:21 得分: 0



lonelybug(孤独虫子) ( ) 信誉:98 2006-03-11 07:31:00 得分: 0
acsharplover(斜阳) ( ) 信誉:98
明白2位想表达什么,对象数据库的出现是必然趋势,只是在相当长时间内关系数据库还是主流
说到底hibernate只是工具,工具只有好用与不好用之分,如果它适合你的项目,那就使用它吧,如果它成为限制,那就放弃它,没人强迫你



Top
lllllllllluoyi(罗毅) ( ) 信誉:93 2006-3-11 19:22:31 得分: 0



呵呵,一天没有上来,没想到贴子被顶上了。
我用吃饭的时间认真地看了各位的回贴,我觉得"xinggg(风之渡)"兄弟说得很好。怀疑的态度应该让我们每个人具有。当我们了解了某项技术的优劣后就会在实际项目中选择合适的技术框架。我的本意没有否定hibernate的思想,我在乎的是它的效率。我发现有兄弟对我的批评有离题了。一个优秀的框架不仅是它的设计思想是优秀的,而且它在运行效率方面也是应该是优秀的。当对于成千上万的数据,设计者们应该首先考虑的是它执行的速度。
不光是hibernate,其它的框架我也会去研究,找出它的不足。
谢谢各位的讨论。



Top
netthisway(白人) ( ) 信誉:100 2006-3-11 20:17:09 得分: 0



我觉得很不错啊。
置顶的就一定要搞得好象非常有学问啊??
这些疑问我想在Java世界的一半人以上还是稀里糊涂
大众型的东西才是最珍贵的
如果觉得地球不合适就回火星去好了



Top
tfp(tfp) ( ) 信誉:89 2006-3-11 20:26:32 得分: 0





本人认为 ORM 的技术是过渡性的, 只有SQL 才是 语言的终极目标方向




本人认为 ORM 的技术是过渡性的, 只有SQL 才是 语言的终极目标方向




本人认为 ORM 的技术是过渡性的, 只有SQL 才是 语言的终极目标方向



Top
wangjinwang(王进) ( ) 信誉:100 2006-3-11 21:10:16 得分: 0



Hibernate是一个有用的东西,虽然它不完美。
有用的东西是否真的有用,还要看你怎样用,有没有用好。
有些认识,没有亲身经历就没有深刻感受。
要掌握一个东西的用法,既要认识它的优势,也要了解它的劣势。
讨论一下还是不错的,虽然浪费了一些人的一点时间,但相信会有更多的人受益吧。



Top
vieri_ch(尘雨) ( ) 信誉:100 2006-3-11 21:10:57 得分: 0



也曾经看过和尝试用过Hibernate的一些特性。但心里一直有几个问题

.hibernate是数据库和应用程序之间的数据化持久层??类和对象都存在于内存中,hibernate也必然如此。但这种持久化不认为可靠。通常一个健壮的戏数据系统使用的数据库都是SQL SERVER ,DB2,ORACLE等大型数据库,并依赖于这些数据库自身所具有含量数据存储能力实现数据持久,他们的事务特性来保证数据处理的一致性和完整性。而且这些都是形成了行业标准。历数国外的软件数据系统,运行超过5年的,基本上以存储过程、索引、事务等数据库的特性来做为数据处理的核心。数据系统中涉及到大量的数据存储、处理。数据的完整性、一致性、可靠性是被放在首要考虑的原则。应用程序对数据访问和处理不能违反这个原则,但是OO的思想中并没对海量数据的存储和处理提出一个真正的可靠的,被业界肯定的标准。而面向关系的数据库的出现是为了描述数据和对象之间的关系并使之应用。但同样不可违反上述原则。
hibernate用类对数据的结构和关系进行映射,并建立了一个自己的标准来操作数据。虽然归根到底,还是要通过sql来操作。可以这么说,轻量级的应用中无需使用数据库的海量存贮和事务特性。这么做在数据库和应用程序之间建立了统一的OO操作方式。很优雅。问题是一旦我们需要更为可靠,更为海量,更为快速的使用数据的时候,hibernate是否可以达到原先的要求。
当我们操作一些简单的表和表之间的关系的时候,hibernate也许很好用。但如果我为了优化数据访问的性能。表,存储过程,触发器,索引,等特性添加的时候,能否保证我不用修改程序,就可以正常吗。
当我处理上百万甚至上千万的数据(这在很多行业中很常见),用hibernate真的能够让我放心吗。我认为hibernate仅仅在小型的B/S结构应用中才能获得应用,但在要求性能,可靠,事务,一致,真正的持久性的系统中,能够提供什么样的作用,就很难说了。从标准上来讲,hibernate提出的数据操作标准,依赖于SQL,但却试图让程序员忘记SQL,只记得有增删改查这样的操作。况且虽然有很多hibernate代码生成工具可以自动的产生映射类和映射配置文件的定义,能够提高效率,但对数据库系统中真正的精髓都不去了解和掌握的话,这样的程序员有多少生命力,当你学会一样新的技术,却把数据库降格为一个简单的数据存储服务。那么ORACLE,SQLSERVER,DB2在用户和开发人员眼里还有什么价值。
ORM是一个发展的方向,但不可能完全取代RDBMS,一旦SQL SERVER ORACLE DB2 对类和对象的支持逐渐完善并形成sql那样的标准,hibernate,他的价值呢?



Top
vieri_ch(尘雨) ( ) 信誉:100 2006-3-11 21:28:42 得分: 0



数据库系统的发展离不开标准,不然SQL不会深入开发人员的心,对于基本的操作,我们不需要衍生太多的东西。ORM目前的标准仍在摸索和制定阶段。hibernate是这个阶段一个衍生品,了解和学习其框架的特点的远比使用它操作数据要有意义的多,仅仅因为会用而觉得可获得工作和工资的保障的话,那么有很多技术比这个更“值钱”。衍生概念很多的,快速的学习和适当的摸索使用,不代表把他奉为真理,很多新的开发技术未等你深入就已经转变方向。而已有的东西甚至还未消化。虽然很羡慕java开发方向能够很优雅的开发程序,并且极具创造性的提出很多框架以及概念。但终究心力有限,未敢尝试越界,还是让自己的技术更加深化比较好,个人想法,不代表其他人。



Top
dongfei(风月无影) ( ) 信誉:99 2006-3-11 22:30:38 得分: 0



好帖,顶。



Top
windgoogle(前途是光明的,道路是曲折的) ( ) 信誉:100 2006-3-11 22:55:41 得分: 0



Mark , 希望多一些这样的讨论



Top
meitouza(极限冲刺) ( ) 信誉:100 2006-3-11 23:17:53 得分: 0



俺是新手 俺对程序制作的想法是 大程序的设计要尽量的颗粒化。就象 原子组成分子
每个原子又必须近可能的独立开来(解偶),用最小的颗粒去制作东西 这样再制作其他的,现成的东西会很多,而且对于需求的变化所导致的损失也会相对小很多。。
每个东西都有他存在的理由 没办法-学吧




Top
fjeoiekel() ( ) 信誉:100 2006-3-11 23:52:12 得分: 0



www.source520.com 免费免注册80G源码书籍下载



Top
xuyadong(aixa) ( ) 信誉:100 2006-3-12 0:10:31 得分: 0



面向对象 ===>关系数据库

呵呵。我估计以后会有面向对象的数据库。
以后直接把对象放在集合里,就保存OK,用时再连接上数据库,拿出来就OK了。

到时,还要我们程序员干嘛?全部失业吧。



Top
sjjf(水晶剑锋) ( ) 信誉:100 2006-3-12 0:19:32 得分: 0



mark再说



Top
Timsole(Timsole) ( ) 信誉:100 2006-3-12 0:38:11 得分: 0



mark 即将进入hibernate 关注一下



Top
zhaoyq2001(大瞌睡虫) ( ) 信誉:100 2006-3-12 7:01:04 得分: 0



分工太细,必然增加许多不必要的资源浪费。
还是看具体情况具体应用吧。



Top
JAVA_Star(鸿兴) ( ) 信誉:100 2006-3-12 8:21:59 得分: 0



hibernate做为数据持久层框架,和struts,spring等框架一样,都是为了以后通过xml配置对软件维护上能更加方便



Top
cwy1213(cwy) ( ) 信誉:100 2006-3-12 9:08:39 得分: 0



JAVA里面概念一大把



Top
acsharplover(斜阳) ( ) 信誉:98 2006-3-12 10:51:42 得分: 0



知道为什么JAVA社区里概念一大把嘛?因为JAVA不象C/C++那样仍然还能面向机器做开发,JVM已经把这些都完全屏蔽了,它提供给你一个抽象的世界,JAVA的编程完全就是基于概念的!你根本不需要懂得任何底层细节,所以有时觉得用JAVA的程序员挺悲哀的,虽然可以自由的使用体系结构、设计模式等软件工程技术来富有创意得构建软件,但是远离了对计算机的基本理论和一些基础课程的深入探索、研究。这就是为什么我的好多同学都不愿意做JAVA的原因,因为这种东西做下去一点竞争力都没有!



Top
bladefenix() ( ) 信誉:100 2006-3-12 11:43:50 得分: 0



不太同意楼上的观点..
我们为什么学JAVA 学各种各样的技术??
因为它能解决实际问题,提高办公效率,推动生产力发展.
我们不是为了技术去学技术,为了编程去编程.
如果你觉的只有底层的细节才是有前途,那你干脆干什么都去用汇编算了.C++都别用.
但实际上能这样么??




Top
acezt2kv() ( ) 信誉:100 2006-3-12 12:03:09 得分: 0



為了OO的理念, 結果把簡單的操縱二維表格的方法設計這樣麻煩, 狂熱堅持理念的人果然很可怕.



Top
huyc_fly() ( ) 信誉:100 2006-3-12 12:26:14 得分: 0



学习



Top
sturdypine(Hades) ( ) 信誉:99 2006-3-12 14:33:06 得分: 0



又在搞语言争论,武术没有高下之分,只有习武之人才有强弱之别。
没学过hibernate(尽管听到他如雷灌耳)。 因为我有SQL的基础,所以我选择了Ibatis,并准备坚持的学和用下去,大脑有限时间也有限,我也只能学一个了,如果大家打架评出哪个最牛,哪个更牛了别忘了告诉我一下,好让我来个临时变节:——)。
STRUTS也是如雷灌耳但没学过,我准备用SPRING MVC学习并坚持用下去,还是那句把有限的经历放在有限的东西上。
know something about everything and everything about something...



Top
ggzzkk(啦啦啦!啦啦啦!) ( ) 信誉:62 2006-3-12 15:47:15 得分: 0



请问大家有没有用过Torque,在性能方面Torque如何?



Top
rickhunterchen(千山鸟飞绝) ( ) 信誉:100 2006-3-12 16:26:56 得分: 0



至少hibernate的分页技术就比ibatis或者写sql语句强大。
说实在的,ibatis的分页也只是做个假动作,读取所有数据,再给你看你需要看的那部分。对大量数据来说,点击下一页可能要让客户等上几秒钟甚至更长。
很多人就采取了三层嵌套的sql的语句,但这样,参数的传递又成问题。
又有人写存储过程,但实际效果并不突出。

hibernate在进步,所以当你用上hibernate后,也就不会再想去用别的了。





Top
lark3(海鸥) ( ) 信誉:100 2006-3-12 17:57:07 得分: 0



mark




Top
KAI3000(天天向上) ( ) 信誉:100 2006-3-12 23:23:44 得分: 0



mark too,studying



Top
TONYBLARED(奔放的犀牛) ( ) 信誉:95 2006-3-12 23:47:28 得分: 0



强烈同意:sbgphl(十八哥)关于“没人要的观点”。




Top
bokei(一夜好眠) ( ) 信誉:100 2006-3-13 9:17:44 得分: 0



无论用什么都是看实际需要吧,象Hibernate,可能大家觉得它的性能不高,不过我觉得这个可以不断改进,在没有更好的代替之前,还是可以用在很多地方的。象Java刚出的时候不是也被人家说慢么,但是现在很多超大型系统都是用Java。
Hibernate简化了程序设计中SQL<----->对象之间的转换,也是提高了程序的简洁性吧。



Top
bzshow(风人) ( ) 信誉:100 2006-3-13 10:09:48 得分: 0



用hibernate做了项目就知道好处了。



Top
baseyueliang(baseyueliang) ( ) 信誉:100 2006-3-13 10:33:14 得分: 0



为什么非要把数据库字段映射成对象属性?
一个系统中存在大量的类,而这些类都只有大量的属性.
这就是所谓的面向对象了?究竟是对象?还是结构体?





Top
Aryang(编程砖家) ( ) 信誉:100 2006-3-13 11:17:19 得分: 0



这么热闹,来凑凑
现在的Java及其衍生,很多都是集体无意识行为的经典例子吧

我的感觉这种东东还是只能用在中小型项目里,很多大型项目里web只是一小部分,Hibernate有些不好处理的地方非要怪数据库设计的不好,软件开发不等于web开发,除非是个纯web的应用,数据库的设计哪能完全被一个web工具牵着走啊,那些Oracle调优的培训,一天几千块,从Hibernate方面来说,基本没多大价值了

好轮子是不会挑车的



Top
shockely(梦想的天空) ( ) 信誉:100 2006-3-13 11:35:22 得分: 0



强调几点:我们做项目应该根据具体需求来决定使用什么技术,我们是要速度还是要开发及维护效率,要在这两者之间做好平衡;自己的系统是否是海量存取的,是否数据库的速度会对系统性能产生很大的影响,再来决定是否用HIBERNATE。有人认为HIBERNATE好是因为它提高开发维护效率,提高了代码的简洁度,有人认为不好是因为HIBERNATE的查询灵活度不够对于他们的海量存取系统产生性能影响,所以在决定使用HIBERNATE之前先确定自己的系统是什么样的系统。听到楼上有人说JAVA让程序员不了解计算机底层感到很失望,你这是为技术而技术,我们做项目是为了满足客户需求,谁跟你们说我们学JAVA时就了解不到底层啊,只要你好学可以主动去了解而不是被动地通过学习语言来了解



Top
baseyueliang(baseyueliang) ( ) 信誉:100 2006-3-13 11:43:12 得分: 0



速度还是效率?楼上的搞笑了,哪个企业的项目不要求运行速度的?又有哪个项目容许慢效率的?



Top
kidfang(方正刚) ( ) 信誉:100 2006-3-13 12:36:54 得分: 0



Hibernate只是种工具,用来提高薪酬待遇的道具,类似的还有一堆.



Top
weilinwu(特立独行) ( ) 信誉:100 2006-3-13 13:06:39 得分: 0



简单的表操作可以使用Hibernate,复杂表及表之间的操作最好直接使用JDBC连接、操作。



Top
shockely(梦想的天空) ( ) 信誉:100 2006-3-13 13:59:25 得分: 0



to baseyueliang(baseyueliang):请不要断章取义,我后面已经说要做好这两者之间的平衡。帖已结不需要再讨论了!



Top
strutsdbk(你幸福我快乐) ( ) 信誉:95 2006-3-14 4:27:50 得分: 0



楼主的工作就是专门研究已经存在的所有框架的不足,专门找问题的.

楼主忘了,一架有设计缺陷的 F22 厉害,还是 一架设计完美的 F16 厉害.
答:一个普通的飞行员驾驶一架有缺陷的F22,可以轻松的干掉4个优秀的飞行员驾驶的4架设计完美的F16.

答:一个优秀的飞行员驾驶一架有缺陷的F22,可以轻松的干掉8个优秀的飞行员驾驶的8架设计完美的F16.







Top
sjjf(水晶剑锋) ( ) 信誉:100 2006-03-14 12:59:00 得分: 0


java就是慢,当某个项目选用java的时候,就意味着他觉得java的表现的效率能够满足他的要求(这个我们要感谢硬件工作者和编译器工作者的努力了)但这不意味着能改变java慢的本质。
通过虚拟机解释的代码,无论如何都是达不到原生代码的效率的?看看hotspot,jit技术的诞生,就知道了。
也有人说,java用在java虚拟机指令集的机器上速度就会快了,那也只是跟自己比的。
一匹马在平原上跑总比在山地上跑快,但再怎么快,也不会比火箭快。
如果是那种层面的比较的话,就需要去比较java虚拟机指令集和intel机器的指令集的设计的合理性了。
如果java虚拟机指令集比intel合理的话,那么intel的设计师可以被解雇了。

java最大的好处是封装的极好。有一套设计很不错的类库,虽然他是有点慢,但是可靠性还是不错的。还有一大堆企业级的j2ee容器。能够让使用者更专注于业务逻辑。
这东西就像一个好的盔甲,能保护你,但是也会阻碍你的步伐。



Top
sjjf(水晶剑锋) ( ) 信誉:100 2006-03-14 13:06:00 得分: 0


楼上的,
如果一个设计完美的飞机,就是速度慢了点,但是它能够做完美的空翻,z字飞行等动作,
还有一个设计有缺陷的飞机,速度极快,空翻姿势极其丑陋,不能z字飞行,
不知道你愿意采用哪种?

如果是我,在战争时,我会用第一种,在表演时,我会用第二种。


Top
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录