论坛首页 Java企业应用论坛

谈谈Hibernate令人不爽的地方

浏览 95650 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-23  
我spring jdbc,ibatis,hibernate都用过一些,就个人感受而言,如果面向数据库spring jdbc更直接,而面向对象则hibernate较为顺手。我现在项目就用的ibatis,感觉在处理对象间的关联方面不是很舒服。比如A:B是1:n,那么B对象应该有A的引用,A对象有List(或Set)<B>,使用ibatis则在B中放一个A的id,A中就没有B的list,通过get方法来获得。hibernate则能很舒服的表示他们的关系。
0 请登录后投票
   发表时间:2006-09-25  
noble 写道
写到存储过程中,就和移植性考虑冲突呀。
两难的问题,其实最主要的是要定义问题场景。
在什么场景下用什么东西,实用第一。


大型应用,我接触到的电信行业,平台比较单一,Weblogic + Oracle | WebSphere + DB2,复杂的东西写到存储过程,没必要让Java去跑。如果不做通用产品,确实不需要良好的移植性。
0 请登录后投票
   发表时间:2006-09-27  
AreYouOK? 写道
我现在觉得还是jdbc来的最直接,有什么问题无非就是调试一下sql语句。虽然有时候象是在干体力活,但是多花一分钟的时间写sql语句总比花一个小时去研究hibernate产生的奇奇怪怪的现象要划算。


jdbc大家都会,所以相对于整个团队而言,jdbc程序的可读性很好。而hibernate这种东西太复杂,每个人的掌握程度都不一样。这样,当我阅读或者修改别人的hibernate代码的时候,如果他用到了我不熟悉的功能,那么我总是要先花时间了解一下这个功能,否则当我操作对象的时候,不知道hibernate在后面做了些什么奇奇怪怪的事情,心里太没底。或许你是高手,可是当团队里别人要修改你的程序的时候,他怎么办呢?

用最简单的方式解决问题,是很有道理的。



1,jdbc可读性好,那是因为jdbc是基础,很多人都熟悉, 但是并不能因为Hibernat需要学习,有些人不 熟 悉就不用它,不熟悉要学习呀,如果因为不熟悉而不用,那就没有进步了,
我们一块合作得一个大公司,开发现在竟然还只用jsp和javaBean,我以前开发得一些taglib,都不让用,说有些人不熟悉,以后没法改,连mvc架构都不用, 整个项目jsp非常多,javascrit用的也非常多,而且功能都是用一个写一个,简直就是asp的开发样式,我要集成起来,也说怕别人看不懂,开发效率非常低,我觉得总这样就没有发展了

2,其实如果一个项目组没有很熟悉Hibernate的,我也不建议用,开始我做的一个项目,那是我刚熟悉Hibernate,因为感觉比较好,就用了,好在那个项目不是很大,不过因为中间遇到很多问题,导致出力不讨好了,不过总算完成了,自己也对Hibernate比较熟悉了,在以后的项目也有用Hiberante的,感觉开发速度快了很多,而且随着一个个项目开发,也积累了开发了一套工具,非常顺手,很多以前机械干的活现在都没有了,一旦搭起架子来,就专心实现业务,不会出现以前一些很机械的活干半天了
特别说明一下,我们开发项目 一般一个项目组4,5个人, 就我自己对Hibernate比较熟悉,其他很多是不熟悉甚至没用过的,但是我稍微指点一下,基本的操作还是都会的,当然遇到复杂些的就需要熟悉的人来解决
0 请登录后投票
   发表时间:2006-09-27  
Nicholas_Ding 写道
noble 写道
写到存储过程中,就和移植性考虑冲突呀。
两难的问题,其实最主要的是要定义问题场景。
在什么场景下用什么东西,实用第一。


大型应用,我接触到的电信行业,平台比较单一,Weblogic + Oracle | WebSphere + DB2,复杂的东西写到存储过程,没必要让Java去跑。如果不做通用产品,确实不需要良好的移植性。


一般以前从pb转到java的人喜欢数据库为主,实现一个功能,有时候写1000行sql,
其实java语言在逻辑性上怎么也比sql好吧,两者结合实现复杂的逻辑功能其实更好
0 请登录后投票
   发表时间:2006-09-27  
我觉得应该是对性能要求特别高,经测试无法用Java达到性能要求的才用存储过程。存储过程的优势是性能,不是处理复杂逻辑的能力。
0 请登录后投票
   发表时间:2006-09-27  
lszone 写道
我在做项目的时候一般是native SQL 和 HQL混合使用,如果比较复杂的SQL,用native sql比较容易调优,简单一些的查询就用HQL


同意这个看法,俺也是这么做的,不能因为Hibernate有时候不能实现一些东西或实现的不好,或是对待不熟悉它的人比较麻烦,而把Hibernate说的不好
硬件的发展速度高于软件的发展速度,软件开发最主要的是开发速度,和维护性,如果性能下降一点,升级硬件就可以解决的,硬件比起软件还是便宜的
0 请登录后投票
   发表时间:2006-09-28  
hibernate并不是包治百病的良方,它不过是众多持久层技术实现中做的比较好的一个而已。技术永远是为应用服务的,而不是为了技术而技术。
0 请登录后投票
   发表时间:2006-09-30  
大批量更新删除如果提高效率
0 请登录后投票
   发表时间:2006-11-27  
wubg 写道
做报表时,用Hibernate生成一个复杂的SQL语句,真是煞费心思,左连右连痛苦,后面就只能直接用JDBC来实现,用hibernate实现对象add,update,delete是容易,但是,复杂的业务,就没法容易实现了

做pb系统出身得吧?思想没改过来
0 请登录后投票
   发表时间:2006-11-27  
bdzhaopin 写道
Nicholas_Ding 写道
noble 写道
写到存储过程中,就和移植性考虑冲突呀。
两难的问题,其实最主要的是要定义问题场景。
在什么场景下用什么东西,实用第一。


大型应用,我接触到的电信行业,平台比较单一,Weblogic + Oracle | WebSphere + DB2,复杂的东西写到存储过程,没必要让Java去跑。如果不做通用产品,确实不需要良好的移植性。


一般以前从pb转到java的人喜欢数据库为主,实现一个功能,有时候写1000行sql,
其实java语言在逻辑性上怎么也比sql好吧,两者结合实现复杂的逻辑功能其实更好


“逻辑性”取决于程序员,与使用什么语言无关
我见过很多用Oracle PL/SQL写的package,非常的简洁、清晰,也易于维护
如果说,仅仅因为使用存储过程语言而无法将系统设计好,那么用java恐怕一样也不行
0 请登录后投票
论坛首页 Java企业应用版

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