`
442136713
  • 浏览: 51715 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hibernate的11大优势

阅读更多

1、  开发者都知道,hibernate让我们以oo的方式操作数据库,这让我们看到了hibernate的强大之处,体验到操作数据的方便。但Gavin King说,hibernate最耀眼之处是hibernate的缓存机制,而不是以oo的方式操作数据库。Hibernate的缓存机制不外乎是一级缓存session,二级缓存sessionFactory,和第三方缓存如ehcache。也就是hibernate的最强大的地方是它的缓存,理解了这个才能真正的理解hibernate。缓存实在太难了,我至今未能真正理解。

2、  可维护性:ibatis宣扬写sql语句,它将sql语句放进一个单独的xml文件,这种方式赢得了很多开发者的喜爱,一句话,方便维护。但hibernate同样具有这种功能,而且比ibatis更加强大。Hibernate的命名查询/命名参数查询,就是将hql语句放在一个单独的xml文件之中,它仍然让人们以面向对象的方式去操纵数据,这得到大量遵循oo方式开发者的喜爱,而不用在以oo的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些sql语句。但hibernate不仅做了这些,它的native sql查询方式,完全满足sql语句的偏爱者,它像ibatis一样,将sql语句放在配置文件之中。

3、  性能:我坚信,hibernate性能问题不是问题。想想那么多大中小项目都在使用hibernate,你还怀疑hibernate的性能吗?spring整合hibernate之后,在真正性能瓶颈的地方,完全可以使用spring集成的jdbc,或直接写存储过程得了。但首先得确认,这实在是性能瓶颈的地方,我想,不应想当然的认为性能的问题,所谓的性能问题阻挠了很多人。

我认为,性能的好坏无外是发送sql语句的多少而已。性能好,发送的sql语句少,性能差,就是发送大量的sql语句。Hibernate在解决性能问题方面做得非常好。

有了它的缓存机制,使用第三方缓存和数据库连接池,就较好的解决的性能问题。

但这些还不够,hibernate给了开发者足够的自由,让开发者自己去控制性能问题。

我认为开发者可以在以下几个方面自行调优:

a、  在查询字符串中,应该总是使用jdbc的占位符?,或使用使用命名参数:,不要自查询中使用字符串值来代替非常量值。

b、  Flush会影响性能,频繁刷新影响性能,尽量减少不必要的刷新。

c、  Cascade策略,在几对几的关系,正确设置cascade策略,想清楚在操作对象A的同时是否需要级联操作对象B,比如在one to many的父子关系中,删除了父亲one,需级联删除子many,这时的one这端可设置cascade = “delete”,这样在删除one时,会自动删除子,但对子的操作不会影响父。Cascade还有其他的属性值,只要设置正确,可提升性能。

d、  lazy策略,正确设置延迟加载策略同样会提升性能,在one to many或many to many中,通常总应该延迟加载many的一方的到内存。设置了lazy = “true”,首先发送sql语句,加载自己到内存,到需要时才加载级联对象;lazy=”false”,则会同时加载自己和级联对象到内存。

e、  另外还有集合的性能(set、list、map、array),都应正确设置。

f、正确使用第三方缓存,在读操作频繁写操作不多的情况,使用第三方缓存可大幅度提升性能,如ehcache的缓存策略有:read-only,read-write和notstrict-read-write。

f、   随着hibernate新版本的发布,和技术的发展,我相信hibernate的性能会越来越好,所有性能不是不使用hibernate的原因。

4、  hibernate不仅仅作为持久层的orm框架存在,它除了dao层的持久化操作外,还有很多。

在注解annotation已经走向主流的今天,hibernate 迅速响应,让xml部署描述符成为可选的。Hibernate annotation 对大字段的处理只是一个@Lob就搞定了。

hibernate search对Lucene进行了轻量级的封装,全文检索变得非常简单。

Hibernate validator被认为是最合理的验证方式,将验证策略直接附在贯穿各层的领域模型domain上,不再需要哪些web框架的xml方式的验证,代码中不再出现大量的非空/null的判断。

5、  jbpm, Jbpm业务流程引擎的持久层采用hibenrnate来实现,要想使用jbpm,hibernate是必须的。我想,业务流程管理无比重要,在soa迅速发展的今天,如果实施soa项目,业务流程管理是必然和必须的。因为soa就是业务和it技术的融合,是业务流程管理和it基础架构的融合。在soa中,业务管理是第一位的,这需要相应的技术来实现该业务流程管理。开源领域的jbpm我想会是首选。所以,为了将来有可能实施soa项目,为了实现soa的业务流程管理,应该使用hibernate。

6、  大家都知道,hibernate将ejb2时代的实体bean赶进了历史,而ejb3的jpa标准也只不过是hibernate的子集而已。jsr规范请求的威力是巨大的,没有各种jsr规范请求,就不会有各种应用程序框架,各种应用程序框架只是那些jsr规范请求的实现者。jpa作为持久层的规范标准,引导持久层orm框架的方向,jpa同样以面向对象的方式操作数据库,而不是写sql语句。规范标准都完全orm,不写sql了,你还有理由不跟着它吗?

7、  Spring+hibernate+范型+可变参数,这是一个非常强大的组合,对应普通的crud操作,你不再需要重复写那些烦人的相似的dao层和manager层的代码,仅仅需要写一次,就完成了所有大量的crud操作。Ibatis尽管也支持范型,但始终没有hibernate支持的好

8、  Jboss,hibernate是jboss的项目,jboss的所有项目的持久层都采用的hibernate,要知道,jsr规范组的专家们大多数是来自jboss的,在一定程度上说,jboo引领着java的发展方向。使用hibernate,跟着jboss,不偏离java的发展方向。

9、  Gavin King,我最崇拜的偶像,他不仅发明了强大的hibernate,还搞出了同样强大且优雅的web2.0应用程序框架seam。他是ejb3.0专家组成员之一,是jpa规范请求的领导者,他java领域最有发言权、最权威的领袖人物之一。现在,他领导web bean的,jsr299的发展,web bean规范的制定,全球软件巨头如ibm、oracle、bea和apache没有一个反对,纷纷响应。Web bean,想象起来,实在太美好了,完全的松耦合和强类型,所有的应用组件生活在一个应用组件上下文context中,相互合作。那时将不再有各种各样的上下文环境,不再有struts2的ActionContext,不再有spring的ApplicationContext,不再有hibernate的session,不再有持久化上下文,不再有事务上下文,不再有安全上下文,所有组件生活在一个大家庭中,大家其乐融融,实现天下的大和平。

10、   osgi,我认为现在最值得学习的一个技术,有了osgi,实现真正的多模块开发,改变传统的开发方式。现在,已经有了hibernate osgi,spring dynamic modul(osgi),struts 2 同样实现了对osgi的支持。目前,eclipse是基于osgi开发的,ibm的websphere v6.1,bea的所有产品都重构在osgi上,spring的应用服务器同样基于osgi,在EclipseCon2007上,osgi成为了主要的话题。Osgi受到如此的待遇,一点不奇怪,因为他具有无比强大的功能,改变传统的软件开发方式。Osgi采用树设计模式,将一个项目分成多个模块(bundle),每个模块单独部署,单独运行,说白了,就是将一个工程分成许多的插件,每个插件单独开发,重复使用,实现完全的即插即用。太令人激动了。如果公司的软件开发基于osgi,将会有大量的重复使用的osgi bundles,公司将会积累大量的无形资产,软件开发将会越来越快。而ibatis现在还没见到对osgi的支持。

11、hibernate的社区非常繁荣,ibatis则相对平静。  

综述,hibernate还有很多优秀的特点,只是我们不知道。Hibernate与ibatis,就像大家闺秀对小家碧玉,大家闺秀不仅具有小家碧玉的全部,而且知名度更高,更受尊敬,更受人追捧,更有发展前途。小家碧玉尽管也很有魅力,但始终比上大家闺秀。

Hibernate所做的不仅仅是dao层的持久化工作,而ibatis恰恰如此。

选择hibernate,选择orm的王者,选择更全面的工作体验,选择更高效的工作方式,选择更多的利润;选择Gavin King,跟着领袖走;选择jboss,追随开源的潮流,不偏离java的发展方向。

一切都不是借口。一切都在发展,hibernate会越来越好。

分享到:
评论

相关推荐

    hibernate优势

    次为hibernate持久化框架的优势,再根据其中内容展开相应的了解

    hibernate与ibatis比较的11大优势

    ### Hibernate与iBatis比较的11大优势 #### 一、对象关系映射(ORM)方式的强大 1. **面向对象的编程风格**:Hibernate采用面向对象的方式进行数据库操作,这种模式使得开发者能够更加直观地理解数据模型,并且...

    Hibernate Hibernate5 讲义 PDF

    ORM的优势在于提供了一个简单而统一的API,且能够存储海量数据并支持大规模查询。然而,它也有不足之处,例如,开发效率和维护效率相对较低,且开发难度较大,代码量大。持久化对象通常是普通的Java对象(POJO),这...

    JDBC与Hibernate区别

    然而,由于其内部的映射和对象创建过程,对于大量数据操作,Hibernate可能会比JDBC慢一些,尤其是在使用Iterator遍历大数据集时。 在性能方面,JDBC通常在数据读写速度上占有优势,特别是当使用批处理时。而...

    hibernate学习资料大合集

    通过这些资料的学习,开发者不仅可以掌握Hibernate的基本用法,还能深入理解其设计理念和最佳实践,从而在实际开发中充分利用Hibernate的优势,提高开发效率和代码质量。在学习过程中,建议结合实际项目进行练习,...

    深入浅出 Hibernate.pdf

    ### Hibernate的优势 1. **简化数据访问**:通过Hibernate可以使用面向对象的方式来进行数据库操作,无需直接编写SQL语句。 2. **提高开发效率**:由于大部分数据访问逻辑由框架自动完成,因此可以节省大量的开发...

    Hibernate3.6

    总结起来,Hibernate 3.6 作为一款成熟的 ORM 框架,通过对象化的数据库操作方式,极大地提升了 Java 应用的开发效率,同时也提供了丰富的功能和优化选项,帮助开发者更好地应对复杂的数据访问需求。

    Hibernate官方中文参考手册+Hibernate开发指南+Hibernate的两本英文书籍

    Hibernate是一款强大的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库与Java...通过深入学习和实践,开发者可以充分利用Hibernate的优势,提高开发效率,减少出错可能性,并实现更高质量的Java应用程序。

    hibernate

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转换为对对象的操作,极...通过深入学习和实践,开发者可以充分利用Hibernate的优势,减少数据库相关的繁琐工作,专注于业务逻辑的实现。

    Hibernate 概述

    #### Hibernate 的优势 1. **轻量级对象封装**:Hibernate 是 JDBC 的轻量级对象封装,它是一个独立的对象持久层框架,与 AppServer 和 EJB 没有必然联系。Hibernate 可用于任何 JDBC 可以使用的场合,例如 Java ...

    hibernate课程笔记.doc

    总之,Hibernate作为ORM框架,通过将Java对象与数据库表进行映射,极大地简化了数据库操作,提高了开发效率,同时也引入了缓存机制来优化性能。对于初学者而言,理解并熟练运用Hibernate能显著提升数据库操作的能力...

    hibernate与mybatis一起使用取长补短

    然而,对于大数据量的操作,Hibernate可能会因为其过于复杂的对象关联和大量的反射操作而带来性能问题。 MyBatis则是一个轻量级的ORM框架,它的核心是基于SQL的映射,允许开发者自定义SQL查询,从而具有更高的性能...

    hibernate基础 入门/ hibernate basic

    Hibernate的核心优势在于它能够自动处理对象与关系型数据库之间的映射,极大地减轻了开发者的负担。 **Hibernate的特点**: 1. **透明的POJO持久化**:Hibernate使得你可以专注于业务逻辑的开发,而不需要过多地...

    Hibernate依赖包 所有的

    在Java开发环境中,Hibernate极大地简化了数据库交互,通过提供数据持久化的模型、查询语言以及事务处理机制,使得数据库操作变得更为简单。本压缩包包含的是Hibernate框架运行所需的全部依赖包,为你的项目提供了...

    struts+hibernate整合jar包

    整合后的应用可以充分利用Struts 2的MVC优势和Hibernate的ORM功能,提高开发效率,降低维护成本。 在提供的压缩包文件"struts hibernate"中,应包含了Struts 2和Hibernate的最新版jar包。这些库文件包含了运行一个...

    Hibernate电子书(全)

    Hibernate的核心优势在于它能够简化数据访问层的复杂性,提高代码的可维护性和可读性。 #### Hibernate所需类库 在使用Hibernate之前,需要确保系统中已经安装了JDBC驱动程序,这是为了能够与关系数据库进行通信。...

    燕山大学 spring hibernate struts 三大框架 期末复习资料

    通过以上分析,我们可以看到 Spring、Hibernate 和 Struts 这三个框架各自的特点和优势: - **Spring** 主要解决的是 Java 应用程序的复杂性问题,提供了 DI 和 AOP 等高级特性。 - **Hibernate** 作为 ORM 工具,...

    hibernate-lib。rar

    Hibernate,作为一款强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。这个“hibernate-lib.rar”压缩包包含的是Hibernate的核心库,它是Hibernate功能实现的基础。下面,我们将深入...

Global site tag (gtag.js) - Google Analytics