`
guofengcn
  • 浏览: 51046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate性能调优

阅读更多

Hibernate性能调优

 

关键字: hibernate 性能调优

 

Robbin总结的Hibernate性能优化要点:

1.尽量使用many-to-one,避免使用单项one-to-many
2.灵活使用单向one-to-many
3.不用一对一,使用多对一代替一对一
4.配置对象缓存,不使用集合缓存
5.一对多使用Bag 多对一使用Set
6.继承使用显示多态  HQL:from object  polymorphism="exlicit" 避免查处所有对象
7.消除大表,使用二级缓存
    对于上面这些,Robbin进行了详细的讲解。
one-to-many:
     使用inverse=false(default),对象的关联关系是由parent对象来维护的
     而inverse=true的情况下,一般用户双向多对多关联,由子对象维护关联关系,增加子对象的时候需要显示:child.setParent(child)
     为了提高性能,应该尽量使用双向one-to-many inverse=true,在MVC结构中的DAO接口中应该直接用Session持久化对象,避免通过关联关系(这句话有点不理解),而在单项关系中正确使用二级缓存,则可以大幅提高以查询为主的应用。
     多对一性能问题比较少,但是要避免经典N+1问题。
     通过主键进行关联,相当于大表拆分小表。(这个是区分面向对象设计和面向过程设计的一个关键点)
list、bag、set的正确运用
     one-to-many:
     A、使用list 需要维护Index Column字段,不能被用于双向关联,而且必须使用inverse=false,需要谨慎使用在某些稀有场合(基本上是不予考虑使用)
     B、bag/set在one-to-many中语义基本相同,推荐使用bag
     many-to-one:
     A、bag和set不同,bag允许重复插入,建议使用set
在庞大的集合分页中应该使用session.createFilter
    session.createFilter(parent.getChildren(),""),setFirstResult(0),setMaxResult(10))
避免N+1 参考(http://www.iteye.com/post/266972)
    在多对一的情况下,查询child对象,当在页面上显示每个子类的父类对象的时候会导致N+1次查询,需要采用下面的方法避免:many-to-one fetch="join|select"(该方法可能有问题)
inverse=true 无法维护集合缓存(还不是很理解集合缓存和对象缓存)
OLTP类型的web应用,可以群集水平扩展,不可避免的出现数据库瓶颈
    框架能降低访问数据库的压力,采用缓存是衡量一个框架是否优秀的重要标准,从缓存方面看Hibernate
    A、对象缓存,细颗粒度,是针对表的级别,透明化访问,因为有不改变代码的好处,所以是ORM提高性能的法宝
    B、Hibernate是目前ORM框架中缓存性能最好的框架
    C、查询缓存
最后Robbin还针对大家经常出现的Hibernate vs iBatis的讨论进行了一个总结:
   对于OLTP应用,使用ORM框架 而OLEB应用(不确定是什么应用)最好采用JDBC或者其他方法处理
   Hibernate倾向于细颗粒度设计,面向对象,将大表拆分为多个小表,消除冗余字段,通过二级缓存提升性能。
  iBatis倾向于粗颗粒度设计,面向关系,尽量把表合并,通过Column冗余,消除关联关系,但是iBatis没有有效的缓存手段。

分享到:
评论

相关推荐

    hibernate 调优

    ### Hibernate 性能调优详解 #### 一、概述 Hibernate 是一款优秀的 Java 持久层框架,它简化了数据库操作,使开发者能够更加关注业务逻辑而不是底层的数据访问细节。然而,在实际应用中,为了确保应用的高性能与...

    hibernate性能优化

    珍藏的hibernate性能优化,如果对hibernate进行优化,很详细,是工作和面试的好助手

    hibernate 的开发注意项与性能调优

    ### Hibernate的开发注意项与性能调优 在长期的软件开发过程中,Hibernate作为一款流行的ORM(对象关系映射)框架,被广泛应用于Java项目中。然而,在实际的应用场景下,如何进行性能调优是一个非常重要的话题。...

    夏昕.深入浅出Hibernate

    书中会分享一些实用的Hibernate性能调优策略,包括查询优化、缓存配置、连接池选择等。 10. **最佳实践与案例分析**:通过真实项目案例,书中将展示如何在实际开发中有效地运用Hibernate,以及遵循的一些最佳实践,...

    hibernate帮助的相关文档

    "Hibernate性能调优指南"是开发者不可忽视的部分,它提供了很多关于优化查询性能、减少内存消耗、提升并发处理能力的建议。例如,理解懒加载与即时加载的区别,合理设置缓存策略,以及避免N+1查询问题等。 此外,...

    hibernate

    8. **Hibernate性能调优**:讨论如何优化查询性能,减少数据库访问次数,以及合理设置缓存策略等。 9. **Hibernate与Junction(或其他框架)集成**:例如,如何将Hibernate与其他Java框架如Spring整合,实现更高效...

    Hibernate学习笔记

    13. **性能优化**:分享一些实用的Hibernate性能调优技巧,如批处理、缓存利用、避免N+1查询问题等。 通过这份《Hibernate学习笔记》,读者将能全面了解Hibernate的基础知识,并具备实际项目开发中的应用能力。对于...

    Hibernate性能优化

    《Hibernate性能优化》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,性能问题逐渐显现,因此对Hibernate进行性能优化变得至关重要。本篇...

    Hibernate性能优化共9页.pdf.zip

    《Hibernate性能优化共9页.pdf》的压缩包文件聚焦于Java开发中的一个重要框架——Hibernate的性能调优。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作,但同时也可能带来性能问题。以下...

    优化Hibernate性能的几点建议

    通过将`hibernate.show_sql`属性设置为`true`,可以查看Hibernate执行的所有SQL语句,这对于调试和性能调优非常有帮助。不过需要注意的是,在生产环境中应谨慎使用此选项,以免影响性能。 #### 十、综合优化技术栈 ...

    hibernate性能:性能、规模、风险 初评

    ### Hibernate性能:性能、规模与风险初评 #### 一、引言 随着软件系统的不断发展,数据持久化技术成为现代应用程序不可或缺的一部分。其中,Hibernate作为一款流行的Java ORM(Object Relational Mapping)框架,...

    SSH interview

    "Hibernate性能调优"则可能是关于如何优化Hibernate使用,提高应用性能的指南;"大型高并发高负载网站的系统架构解决之道"可能探讨了在高并发场景下,如何设计和优化系统架构,这对理解和应对大型Web应用的挑战非常...

    Jboss性能优化整合

    《JBoss性能优化整合》是一份深度探讨Jboss应用服务器性能提升的重要资料,它集结了作者反复试验与研究的心得,旨在为...无论你是初学者还是经验丰富的开发者,都能从中获得宝贵的性能调优知识,为你的项目保驾护航。

    jpa-hibernate-inf-skls-course:Hibernate课程

    10. **性能优化**:讨论Hibernate性能调优的策略,例如批处理、延迟加载的控制、避免N+1查询问题等。 这门课程不仅适合初学者,也适用于有一定经验的开发者,帮助他们深入理解Hibernate的工作原理,提高数据库操作...

Global site tag (gtag.js) - Google Analytics