`

Hibernate性能调优(ibatis与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没有有效的缓存手段。

 

转自:http://fengzhiyin.iteye.com/blog/376219

分享到:
评论

相关推荐

    Spring hibernate ibatis 开发指南三合一

    相比于Hibernate,iBatis提供了更高的灵活性,开发者可以精细控制SQL的执行,对于复杂查询和性能调优特别有用。 "Spring Guide.pdf"很可能是Spring框架的入门教程,涵盖了Spring的基本概念、配置、Bean管理、AOP、...

    Java高手真经.应用框架卷:Java Web核心框架:Struts 1+Struts 2+Spring+Hibernate+iBATIS

    **iBATIS** 是另一种ORM框架,虽然不如Hibernate强大,但它提供了更直接的SQL映射,允许开发者自定义SQL语句,对于复杂查询和性能调优更有优势。 在上述的【部分内容】中,描述了一个企业信息管理系统的需求,包括...

    JAVA之ibatis2.3.X.ppt

    而iBatis允许开发者直接编写SQL,虽然开发速度可能相对较慢,但更适合任何表结构,且SQL与程序分离,便于DBA进行性能调优。 iBatis的核心在于SQL Map配置文件,它定义了数据库操作与Java对象之间的映射关系。例如,...

    ibatis in action 电子书(pdf)

    1. **iBATIS简介**:首先,书中会介绍iBATIS的基本概念,包括其设计目标、功能特性以及与Hibernate等其他ORM框架的比较,帮助读者理解为何选择iBATIS作为持久层工具。 2. **安装与配置**:详细阐述如何在项目中集成...

    ibatis.rar

    与传统的Object/Relational Mapping(O/RM)框架如Hibernate相比,Ibatis有其独特的优点和适用场景。 1. **SQL控制自由度高**:Ibatis的最大特色在于它允许开发者直接编写SQL语句,而不是像Hibernate那样通过HQL或...

    ibatis 入门实例

    二、iBATIS与Hibernate的区别 1. 数据库独立性:iBATIS 更注重SQL的灵活性,允许开发者直接编写SQL语句,适合处理复杂的查询和性能调优;Hibernate则提供了对象关系映射(ORM),在数据库独立性方面做得更好,但对...

    sturts,hibernate ,spring框架集成

    Spring还支持多种数据访问策略,包括JDBC、Hibernate、iBatis等,使得开发者可以根据需求选择最适合的数据访问方式。 SSH的集成顺序通常如下: 1. 配置Spring:首先,我们需要配置Spring的核心容器,定义Bean的...

    mysql+struts+ibatis(2)

    与Hibernate相比,iBATIS更注重SQL的灵活性,允许开发者编写自定义的SQL语句。在“ibatis(2)”中,可能要学习动态SQL、结果映射、事务管理以及如何将iBATIS与Struts整合,如通过ActionForm或ModelDriven接口传递数据...

    ibatis教程 ppt

    其次,iBATIS 提供了一个更简洁的架构,增强了性能,因为它允许SQL代码与程序代码完全分离,从而提高了代码的可重用性和项目的分工协作能力。此外,由于SQL独立于代码,项目的移植性也得到增强。 对比Hibernate,...

    Ibatis 开发指南

    与全自动化ORM框架如Hibernate不同,Ibatis 允许开发人员拥有对SQL查询的直接控制,这样可以更好地优化数据库操作,并且在复杂查询时保持代码的简洁性和可维护性。 **Ibatis 的核心概念** 1. **SqlMapConfig.xml**...

    ibatis spring

    - **优点**:SQL语句与业务代码分离,便于进行数据库性能调优;使用简单;具备缓存功能;相比ORM有更高的执行效率;支持代码生成工具,避免N+1查询问题。 - **缺点**:相较于Hibernate等框架来说,知名度和社区支持...

    ibatis观看帮助.txt

    与Hibernate等全ORM框架相比,ibatis提供了更多的控制权,特别是在处理复杂查询和性能调优方面。 ### ibatis的示例应用场景 #### 1. 准备阶段 在使用ibatis之前,需要进行一些准备工作,比如创建数据库连接池、...

    ibatis简单实现与配置

    由于Ibatis允许直接编写SQL语句,对于复杂的查询和性能调优非常方便,而Hibernate的全自动ORM可能会在某些场景下显得过于重型。 Ibatis的配置主要包括两个主要文件:`SqlMapConfig.xml`和具体的`.xml`映射文件。`...

    java(spring+struts2+ibaits)整合框架

    3. **iBatis框架**:iBatis是一个SQL映射框架,它将数据库操作与业务逻辑分离,使得开发者可以直接编写SQL语句,避免了Hibernate等ORM框架可能带来的性能损耗。iBatis允许开发者动态构造SQL,提高了数据库查询的灵活...

    JAVA高并发高性能高可用高扩展架构视频教程

    iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel文件下载方式 企业级分布式缓存技术之(redis详解...

    通向架构师的道路.rar

    《通向架构师的道路》是一份综合性的学习资源包,主要涵盖了成为一名...通过这些文档的学习,读者可以逐步构建对架构设计的整体理解,涵盖从基础框架应用到高级性能调优的各个层面,对提升个人技能和职业发展大有裨益。

    (完整版)Java系统架构师面试题.docx

    数据库性能调优是指对数据库性能的优化和改善。数据库性能调优可以通过索引、SQL 语句效率、数据迁移、水平切面等方式来实现。 20. 分布式系统 分布式系统是指对多个系统进行分布式管理,使得它们能够协同工作。...

    Java开源框架集总结

    与Hibernate相比,iBATIS更注重SQL语句的灵活性和性能优化。 **核心优势:** - **SQL语句定制**:iBATIS允许开发者直接编写SQL语句,这意味着可以进行更细致的性能调优。 - **简单易用**:iBATIS的配置和使用相对...

    java常用框架总结.pdf

    - **过度封装**:有些ORM框架可能导致过度抽象,使得底层数据库操作变得不透明,不利于性能调优。 Java社区中存在多种ORM框架,如EJB(Enterprise JavaBeans)、Apache OJB、iBATIS(现为MyBatis)和Hibernate。...

Global site tag (gtag.js) - Google Analytics