锁定老帖子 主题:再论hibernate是否适合做大型应用
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-18
tank1984510 写道 jameswxx 写道 rockliu2009 写道 数据量和查询量都非常大的时候,SQL优化是非常关键的,SQL优化需要相当高的灵活性。hibernate恰恰在带来便利的同时阻挠了这种灵活性。它的自动化不利于对复杂的查询进行优化。ibatis允许开发人员自己优化SQL,牺牲便利带来了设计上的灵活性。选择框架应该根据自己所需要的业务,不是说hibernate一定不适合做大型开发,而是不适合做需要对SQL性能进行苛刻的优化的项目。楼主这篇贴的命题就不准确。
hibernate也提供了对原生sql的支持,能够让你绝对掌控sql。 的确 hibernate 提供的sql 支持。 但是在代码中散落的sql字符串组装, 你可知这个对于大型 长期项目意味着什么? 意味着 难于修正。大型项目人员还是有一定流动性的。 过半年你去哪里找原来组装代码的人? 我个人认为ibatis 提供的是对sql的统一管理,至少项目中的大部分sql都是独立在ibt文件里的 而不是散落在java代码里, 里面夹杂着无数字符串处理。 而提供的sql的便利性 只不过是附带的糖果罢了 我不赞同你的观点,只要模型层做的非常好,代码里嵌入sql,这个没什么,我说的只是在模型层里,比如只有数据库持久层才会有sql语句,上面的业务层只会调用持久层的方法,并提供对外的业务接口,例如service和dao。ibatis 提供对sql的统一管理,将sql和代码分离,这个是确实提高了可维护性,但是并不是代码里嵌入sql一无是处,这个我相信很多人都有感触吧 |
|
返回顶楼 | |
发表时间:2010-05-18
jameswxx 写道 gaojinpeng 写道 不知道楼主,项目里都用了哪些hibernate的高级特性呢?我感觉这个框架还是主要用来规范架构,方便开发的。
难道这还不够吗? 但是我感觉这个帖子里,大部分都是认为hibernate的性能不好,但是我感觉这个是不可避免的事情(毕竟是对jdbc进行了封装),而且hibernate的优点也不主要是这个,比如说统计分析的项目或者是需要复杂数据库查询的项目肯定是不合适的,所以我感觉大家不能拿hibernate的缺点去pk jdbc或者是其他框架的优点,也不能反过来,要根据具体情况来定,大项目也是一样要看需求以及环境,所以我感觉还是没有争论的必要,呵呵, |
|
返回顶楼 | |
发表时间:2010-05-18
做数据移植时 百W条数据很正常的 如果我自己对JDBC有特定的封装(将结果集封装成实体bean,和表结构设计有点关系) 和用Hibenate LZ觉得那个好呢
|
|
返回顶楼 | |
发表时间:2010-05-18
gaojinpeng 写道 jameswxx 写道 gaojinpeng 写道 不知道楼主,项目里都用了哪些hibernate的高级特性呢?我感觉这个框架还是主要用来规范架构,方便开发的。
难道这还不够吗? 但是我感觉这个帖子里,大部分都是认为hibernate的性能不好,但是我感觉这个是不可避免的事情(毕竟是对jdbc进行了封装),而且hibernate的优点也不主要是这个,比如说统计分析的项目或者是需要复杂数据库查询的项目肯定是不合适的,所以我感觉大家不能拿hibernate的缺点去pk jdbc或者是其他框架的优点,也不能反过来,要根据具体情况来定,大项目也是一样要看需求以及环境,所以我感觉还是没有争论的必要,呵呵, 同意 |
|
返回顶楼 | |
发表时间:2010-05-18
前几天在搞mysql数据库的读写分离,采用2台master做写操作,3台slaver读操作,5台数据库之间都是mysql的同步。就是说写一台master,读一台slaver即可。LZ请教我怎么用hibernate实现ORM,谢谢
|
|
返回顶楼 | |
发表时间:2010-05-18
因地制宜 寸有所长 寸有所短
|
|
返回顶楼 | |
发表时间:2010-05-18
hubeicaolei 写道 前几天在搞mysql数据库的读写分离,采用2台master做写操作,3台slaver读操作,5台数据库之间都是mysql的同步。就是说写一台master,读一台slaver即可。LZ请教我怎么用hibernate实现ORM,谢谢
对了,我还忘记了系统中还使用了分表处理机制 |
|
返回顶楼 | |
发表时间:2010-05-18
好吧,我被投了13个新手票,我以后不谈这个了,这里面有多少人一进来就是盲目论断,连我帖子的本意都没看清楚,而不是抱着一种务实的态度就事论事。我以后不发这种月经贴了,这样的帖子一出,必然是口水满天飞。是不是javaeyer现在已经陷入了一种怪圈,凡是看见可能没有什么技术新名词帖子,或者没有什么高深概念的帖子,一上来就评个新手帖,然后再发表一番谩骂,然后再奔赴其他战场,硝烟滚滚,口水横飞,多么壮观,多么和谐,我们在这个圈子里自得其乐,这是不是it界的一个缩影,如果是,那真悲哀。
|
|
返回顶楼 | |
发表时间:2010-05-18
hubeicaolei 写道 hubeicaolei 写道 前几天在搞mysql数据库的读写分离,采用2台master做写操作,3台slaver读操作,5台数据库之间都是mysql的同步。就是说写一台master,读一台slaver即可。LZ请教我怎么用hibernate实现ORM,谢谢
对了,我还忘记了系统中还使用了分表处理机制 可以参考下这个hibernate_shards。 |
|
返回顶楼 | |
发表时间:2010-05-18
如果一个所谓的大型项目是全新的,那么用hibernate确实问题不大。但是一般大型项目都是具有一些遗留系统需要妥协的,正是这种妥协注定了你使用hibernate是一种很不舒服,或则别扭的使用,导致了hibernate的表现很差劲。
关键的地方在这一点上面,至于说到高性能,除开那种极端的web站点的情况。一般正确的使用hibernate其实性能不是问题。 正如我所说,正确的使用hibernate有2个方面的制约,第一是你对hibernate的掌握程度,第二,你对当前开发的状况的妥协程度。 |
|
返回顶楼 | |