论坛首页 Java企业应用论坛

请教关于非公共性网站对hibernate的使用。

浏览 6271 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-28  
非公共性网站即没有登录是无法进行功能使用的网站,比如邮箱。
如果使用hibernate,其缓存的功能是否没有太大的意义。
因为用户与用户之间使用的数据库内容是不同的。
个人感觉如果使用缓存是不是命中率会很低,如果用的话是不是很浪费。
疑问:
1、缓存的必要性?
2、如果没必要用缓存,那Hibernate的必要性?
   发表时间:2008-02-28  
jj5715 写道
非公共性网站即没有登录是无法进行功能使用的网站,比如邮箱。
如果使用hibernate,其缓存的功能是否没有太大的意义。
因为用户与用户之间使用的数据库内容是不同的。
个人感觉如果使用缓存是不是命中率会很低,如果用的话是不是很浪费。
疑问:
1、缓存的必要性?
2、如果没必要用缓存,那Hibernate的必要性?



做互联网应用的话,一般是不太倾向于使用hibernate的.特别是做负载特别大的动态应用的话.
因为hibernate虽然有缓存,但是这个东西需要极其高的技巧才能避免性能上出现问题.
互联网应用的性能优化一般不在这个层面上.我的个人理解,互联网行业的数据库操作应当避免有大数据的联表查询等操作,尽量都是些有索引的单表查询,或是小数据表的联合查询.采用memcached来缓存数据以减轻数据库的压力,squid来缓存静态页面(如果需要的话).

从数据库入手的一些优化,不外是数据散列,数据库的slave-master等.
楼主讨论hibernate缓存的命中率的话,与我的理解有些差异.

hibernate可以使用面向对象的方式来进行数据库持久化操作,它带来一些好处,但我并不甚理解.至少可以不必写烦琐的jdbc,操作connection statement,resultset这些东西,实体与db record自动映射吧.

个人感觉hibernate的好处还是在开发与维护上,而不在运行上.
因为说起效率,即便hibernate很好的处理了缓存,延迟加载等机制,最多也与jdbc相当而已,不至于比jdbc效率高出很多吧?

这块内容我理解很浅薄,以上说的一些个人观点,仅仅供参考.
期待大家对此问题发表的观点
0 请登录后投票
   发表时间:2008-02-28  
yyjn12 写道
jj5715 写道
非公共性网站即没有登录是无法进行功能使用的网站,比如邮箱。
如果使用hibernate,其缓存的功能是否没有太大的意义。
因为用户与用户之间使用的数据库内容是不同的。
个人感觉如果使用缓存是不是命中率会很低,如果用的话是不是很浪费。
疑问:
1、缓存的必要性?
2、如果没必要用缓存,那Hibernate的必要性?



做互联网应用的话,一般是不太倾向于使用hibernate的.特别是做负载特别大的动态应用的话.
因为hibernate虽然有缓存,但是这个东西需要极其高的技巧才能避免性能上出现问题.
互联网应用的性能优化一般不在这个层面上.我的个人理解,互联网行业的数据库操作应当避免有大数据的联表查询等操作,尽量都是些有索引的单表查询,或是小数据表的联合查询.采用memcached来缓存数据以减轻数据库的压力,squid来缓存静态页面(如果需要的话).

从数据库入手的一些优化,不外是数据散列,数据库的slave-master等.
楼主讨论hibernate缓存的命中率的话,与我的理解有些差异.

hibernate可以使用面向对象的方式来进行数据库持久化操作,它带来一些好处,但我并不甚理解.至少可以不必写烦琐的jdbc,操作connection statement,resultset这些东西,实体与db record自动映射吧.

个人感觉hibernate的好处还是在开发与维护上,而不在运行上.
因为说起效率,即便hibernate很好的处理了缓存,延迟加载等机智,最多也与jdbc相当而已,不至于比jdbc效率高出很多吧?

这块内容我理解很浅薄,以上说的一些个人观点,仅仅供参考.
期待大家对此问题发表的观点


非常同意你关于memcache,squid,DB的分布与同步方面的观点,在上几个项目中的确是这样来实现的,但是我认为这些技术应该统筹为运维层面,如果一个J2EE的应用必须要依赖于java之外的技术来实现性能优化和可伸缩性,这并不是很好的方法。这不是否定其他的优化方案,实际上从squid一直到数据库服务器的磁盘I/O,每个影响性能的地方都要考虑到,但是从J2EE这个黑盒来看,一些性能优化是必须并且无法替代的。

BTW,memcache,squid,ligthHttpd这些技术也同样有着相应的学习曲线,相对于hibernate的缓存来讲,我想这些东西更加难一些,毕竟hibernate是一个开源的java框架。


关于hibernate,你所说的以下俩点:
1.做互联网应用的话,一般是不太倾向于使用hibernate的.特别是做负载特别大的动态应用的话.
2.互联网行业的数据库操作应当避免有大数据的联表查询等操作,尽量都是些有索引的单表查询,或是小数据表的联合查询

这正是hibernate或者O/R mapping优越于JDBC或者JDBC template的地方。而hibernate的弱势在于处理复杂的联合查询以及批量处理方面。

“因为hibernate虽然有缓存,但是这个东西需要极其高的技巧才能避免性能上出现问题.”,这句话本身说的正确,而且令人矛盾的是,缓存的出现是为了解决性能问题,而现在使用缓存却要避免性能出现问题。问题的根源不在于hibernate,而在于谁在用hibernate。

楼主询问是否应该使用hibernate或者缓存,我推荐阅读hibernate in action这本书,一个帖子不可能给你足够的信心做出选择,但是我相信这本书可以
1 请登录后投票
   发表时间:2008-02-28  
啊。不好意思,其实我说的那个缓存就是指hibernate的那个缓存。。是我没写清楚。。
感谢二位的意见。
0 请登录后投票
   发表时间:2008-02-29  
jj5715 写道
啊。不好意思,其实我说的那个缓存就是指hibernate的那个缓存。。是我没写清楚。。
感谢二位的意见。



那个缓存是为了弥补弊端的.

使劣势不再是劣势的.

而不是创造优势的.
0 请登录后投票
   发表时间:2008-02-29  
楼主说的这种情况,的确是最不适合做缓存的情况。

我就是做邮件系统的,而且是大型邮件系统。所有类似hibernate的工具,很难使用在产品中,没有办法,数据根本不能共享,体现不出优势。而hibernate的速度比起写好比较好的直接jdbc还是有些差距。

单独为一个用户缓存自己的数据,内存又顶不住,只好每次都重新取数据,最多个别简单的属性(通常是一个标记位,boolean型的)放session里面。
0 请登录后投票
   发表时间:2008-02-29  
简直都成月经贴了。

他们说Hibernate性能不行,我说Hibernate的缓存是性能必杀技;
他们接着说互联网网站不能用ORM,我说JavaEye的对象缓存命中率是88%;
他们又说你那是BBS,大家点击频繁,所以命中率高,我说JavaEye的博客每个内容都不一样,照样命中率高;
他们最后说非公共性网站不能用ORM,我只能说你做一个非公共性网站干吗用呢?

这个世界多的是不用ORM但是性能很好的网站,这个世界也有很多用了ORM性能也很好的网站,连Google都在用Hibernate。你要用ORM便用,你不要用ORM便不用,一边嘴里说着不用不用就不用,一边心里忐忑不安,我到底用还是不用,用还是不用,非得说服所有人都不用才安心,不如别惦记着Hibernate了,省得自己费心,别人看着费劲。

1 请登录后投票
   发表时间:2008-02-29  
robbin 写道
简直都成月经贴了。

他们说Hibernate性能不行,我说Hibernate的缓存是性能必杀技;
他们接着说互联网网站不能用ORM,我说JavaEye的对象缓存命中率是88%;
他们又说你那是BBS,大家点击频繁,所以命中率高,我说JavaEye的博客每个内容都不一样,照样命中率高;
他们最后说非公共性网站不能用ORM,我只能说你做一个非公共性网站干吗用呢?

这个世界多的是不用ORM但是性能很好的网站,这个世界也有很多用了ORM性能也很好的网站,连Google都在用Hibernate。你要用ORM便用,你不要用ORM便不用,一边嘴里说着不用不用就不用,一边心里忐忑不安,我到底用还是不用,用还是不用,非得说服所有人都不用才安心,不如别惦记着Hibernate了,省得自己费心,别人看着费劲。



还是老大说的透彻。
0 请登录后投票
   发表时间:2008-03-01  
实在不想用Hibernate,
推荐 Torque , 比较简单易用,就是文档少点。
0 请登录后投票
   发表时间:2008-03-01  
呵呵,确实月经,javaeye上可以搜到N篇这样的帖子。

其实什么用好了都可以解决问题,关键是看你们的团队里有没有合适的人来用它。如果有hibernate高手,就用Hibernate,如果有很好的dba,就用ibatis或jdbc.

javaeye有robbin所以用orm没问题,但你们的团队没有这样的人,或者没有信心留住这样的人,就不要用orm,毕竟dba还是相对好找一些.
0 请登录后投票
论坛首页 Java企业应用版

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