精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-28
如果使用hibernate,其缓存的功能是否没有太大的意义。 因为用户与用户之间使用的数据库内容是不同的。 个人感觉如果使用缓存是不是命中率会很低,如果用的话是不是很浪费。 疑问: 1、缓存的必要性? 2、如果没必要用缓存,那Hibernate的必要性? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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效率高出很多吧? 这块内容我理解很浅薄,以上说的一些个人观点,仅仅供参考. 期待大家对此问题发表的观点 |
|
返回顶楼 | |
发表时间: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这本书,一个帖子不可能给你足够的信心做出选择,但是我相信这本书可以 |
|
返回顶楼 | |
发表时间:2008-02-28
啊。不好意思,其实我说的那个缓存就是指hibernate的那个缓存。。是我没写清楚。。
感谢二位的意见。 |
|
返回顶楼 | |
发表时间:2008-02-29
jj5715 写道 啊。不好意思,其实我说的那个缓存就是指hibernate的那个缓存。。是我没写清楚。。
感谢二位的意见。 那个缓存是为了弥补弊端的. 使劣势不再是劣势的. 而不是创造优势的. |
|
返回顶楼 | |
发表时间:2008-02-29
楼主说的这种情况,的确是最不适合做缓存的情况。
我就是做邮件系统的,而且是大型邮件系统。所有类似hibernate的工具,很难使用在产品中,没有办法,数据根本不能共享,体现不出优势。而hibernate的速度比起写好比较好的直接jdbc还是有些差距。 单独为一个用户缓存自己的数据,内存又顶不住,只好每次都重新取数据,最多个别简单的属性(通常是一个标记位,boolean型的)放session里面。 |
|
返回顶楼 | |
发表时间:2008-02-29
简直都成月经贴了。
他们说Hibernate性能不行,我说Hibernate的缓存是性能必杀技; 他们接着说互联网网站不能用ORM,我说JavaEye的对象缓存命中率是88%; 他们又说你那是BBS,大家点击频繁,所以命中率高,我说JavaEye的博客每个内容都不一样,照样命中率高; 他们最后说非公共性网站不能用ORM,我只能说你做一个非公共性网站干吗用呢? 这个世界多的是不用ORM但是性能很好的网站,这个世界也有很多用了ORM性能也很好的网站,连Google都在用Hibernate。你要用ORM便用,你不要用ORM便不用,一边嘴里说着不用不用就不用,一边心里忐忑不安,我到底用还是不用,用还是不用,非得说服所有人都不用才安心,不如别惦记着Hibernate了,省得自己费心,别人看着费劲。 |
|
返回顶楼 | |
发表时间:2008-02-29
robbin 写道 简直都成月经贴了。
他们说Hibernate性能不行,我说Hibernate的缓存是性能必杀技; 他们接着说互联网网站不能用ORM,我说JavaEye的对象缓存命中率是88%; 他们又说你那是BBS,大家点击频繁,所以命中率高,我说JavaEye的博客每个内容都不一样,照样命中率高; 他们最后说非公共性网站不能用ORM,我只能说你做一个非公共性网站干吗用呢? 这个世界多的是不用ORM但是性能很好的网站,这个世界也有很多用了ORM性能也很好的网站,连Google都在用Hibernate。你要用ORM便用,你不要用ORM便不用,一边嘴里说着不用不用就不用,一边心里忐忑不安,我到底用还是不用,用还是不用,非得说服所有人都不用才安心,不如别惦记着Hibernate了,省得自己费心,别人看着费劲。 还是老大说的透彻。 |
|
返回顶楼 | |
发表时间:2008-03-01
实在不想用Hibernate,
推荐 Torque , 比较简单易用,就是文档少点。 |
|
返回顶楼 | |
发表时间:2008-03-01
呵呵,确实月经,javaeye上可以搜到N篇这样的帖子。
其实什么用好了都可以解决问题,关键是看你们的团队里有没有合适的人来用它。如果有hibernate高手,就用Hibernate,如果有很好的dba,就用ibatis或jdbc. javaeye有robbin所以用orm没问题,但你们的团队没有这样的人,或者没有信心留住这样的人,就不要用orm,毕竟dba还是相对好找一些. |
|
返回顶楼 | |