精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-16
我在做项目的时候一般是native SQL 和 HQL混合使用,如果比较复杂的SQL,用native sql比较容易调优,简单一些的查询就用HQL
|
|
返回顶楼 | |
发表时间:2006-09-16
lszone 写道 我在做项目的时候一般是native SQL 和 HQL混合使用,如果比较复杂的SQL,用native sql比较容易调优,简单一些的查询就用HQL 我也是这么干的
|
|
返回顶楼 | |
发表时间:2006-09-16
tomcat 写道 lszone 写道 我在做项目的时候一般是native SQL 和 HQL混合使用,如果比较复杂的SQL,用native sql比较容易调优,简单一些的查询就用HQL 我也是这么干的我觉得native sql只是个应急的方案,不是最好的方案。 |
|
返回顶楼 | |
发表时间:2006-09-17
robbin 写道 对于Hibernate,有两点值得反思:
1、HQL创造出来一种语言,目的是以对象方式类SQL去查询数据库,但是为什么不像rails那样,干脆直接定义COC让数据库schema 和对象的schema吻合在一起呢?这样,SQL不就是直接变成了对象查询语言了吗?缺点就是放弃更多更复杂的对象映射模型。但是我的经验表明,项目中要尽量避免复杂的对象映射,这样性能很糟糕,也很容易出错,实际上我仅仅只用n:1就可以表达很多种映射模型了。化繁为简,大巧若拙实为最高境界。 2、现在极其厌恶Hibernate生成的SQL,又臭又长,极难阅读。 HQL 是为了在不同数据库之间做兼容的产物,它确实做了它该做的事。这一点还是很好的,只是学习 HQL 和用好它需要不少的功夫。 Hibernate 生成的SQL性能也还是可以的,只是配置对SQL语句的产生有微妙的作用。这又拉高了学习曲线。 Hibernate 一直最让我不爽的地方,是对 web redeploy 这个问题的态度。 一开始有人说 Hibernate 这个问题是因为其它第三方的包引起的,于是有人说 Hibernate 是个好产品,但是也应该谨慎使用第三方的包,要不然 Hibernate 怎么能走向成熟和专业,可是 Gavin 居然要求版主封了此人的发贴权,呵,怎么都不像是个专业人士。 在越来越多的人反映这个问题时, Hibernate Team 的人把这个问题推向了 cglib, dom4j,一开始说 cglib 的 dynamic proxy 引用了 classloader, 无法释放资源,cglib 的人说他们已经修复了这个问题,后来 Hibernate team 又说是 dom4j 有问题,dom4j 也说自己修复了这个问题。后来又说是 jakarta-common 包中有问题....无论你怎么试,最后你发现 Hibernate 就是存在 redeploy 时 OutOfMemory 的问题。 我自己以前开发过很多 web 应用,也用过 jakarta-common, dom4j 的包,虽然是有一些问题,但是这么频繁引起 redeploy 问题的我还真没遇到过。我试了 spring + hibernate + tapestry. 最后我把 hibernate.jar 去掉,一切就正常了。 spring 中也使用 cglib 啊,也使用 jakarta-common 啊为什么, spring 就不会有问题, hibernate 就有问题? 当你的产品有问题的时候,你就该站出来,承认自己是有问题,然后去解决它。这才是男人。我鄙视 hibernate 的人!!! |
|
返回顶楼 | |
发表时间:2006-09-17
我觉得不爽的是如果HQL要想使用左右连接,必须先配一对多,多对多才能使用。如果不配,那就不能用。我的系统里都没配,所以碰到左右连接只能用native sql,但框架里又是设计成OO的,用native sql非常别扭。
|
|
返回顶楼 | |
发表时间:2006-09-18
一个软件,一个技术,最重要的是可持续性吧,这几年,不仅仅hibernate,其它的开源软件为可持续性做了多少努力?不知道,我觉得不会超过10%,可能更低。
做为一名java程序员,从职业生涯的角度来说,应该了解一些更为持久的,不是昙花一现的技术,从技术的角度来说,应该了解一些低层基础一点的东西。 ps: 来自国内某技术论坛的观点,对于一个企业级的应用系统系统来说,解决oracle8i,9i到oracle10g的需求很大,从sqlserver迁移到orcle的需求并不多。 除非:1,它不是企业级系统,2,dba那时候头脑发晕。 |
|
返回顶楼 | |
发表时间:2006-09-18
robbin 写道 ddandyy 写道 那robbin说说应该用哪个呢
Java的话,目前来说最好的ORM就是Hibernate了,没有太多别的选择。用Java开发项目,我选择的框架无非也就是Hibernate/Spring/Webwork 看来hibernate的优点还是胜过缺点的啊。 |
|
返回顶楼 | |
发表时间:2006-09-18
Hibernate现在使用的越来越多,所以批评的也越来越多,没有这么多人的使用和批评,他也不可能有更好的发展,相信他的开发者也正在解决这些问题,大家也要有耐心阿,呵呵
|
|
返回顶楼 | |
发表时间:2006-09-18
downpour 写道 Hibernate在查询时,面对很多映射有时候显得很苍白。
例如有个业务场景,Department和Employee是一对多关系。现在我对Department进行分页查询,要求在显示的页面上同时显示每个Department中Employee的数量。这是一个很简单的业务场景,但是想象一下如何用hibernate进行映射? 首先否定一种做法:hql:FROM Department department。然后针对每个department,去做department.getEmployees().size()。这样不仅会发送n+1条SQL,而且性能太低。 呵呵,这种需求,建个视图不就可以了? 方便快捷. 不过,又有人说这样不够oo了. |
|
返回顶楼 | |
发表时间:2006-09-18
asd 写道 一个软件,一个技术,最重要的是可持续性吧,这几年,不仅仅hibernate,其它的开源软件为可持续性做了多少努力?不知道,我觉得不会超过10%,可能更低。
做为一名java程序员,从职业生涯的角度来说,应该了解一些更为持久的,不是昙花一现的技术,从技术的角度来说,应该了解一些低层基础一点的东西。 ps: 来自国内某技术论坛的观点,对于一个企业级的应用系统系统来说,解决oracle8i,9i到oracle10g的需求很大,从sqlserver迁移到orcle的需求并不多。 除非:1,它不是企业级系统,2,dba那时候头脑发晕。 呵呵,深有同感! |
|
返回顶楼 | |