使用hibernate的11大优势

hibernate简介及优缺点 一.持久化:将内存中的瞬时态数据保存成数据库中持久态数据的操作 1.瞬时态:以new命令实例化后从未用session将其与数据库关联(保存)过的对象,如果没有任何变量/方法对其进行引用它将被JVM回收 2.持久态:用session的相关方法将瞬时态对象保存到数据库中与数据库相关联的对象 3.脱管态:将持久态对象所关联的session关闭后,该持久态对象即变为脱管态对象 二.ORM:ORM是对象到关系的映射(Object Relational Mapping),是将数据持久化的过程 1.Hibernate持久化类:Hibernate的持久化类是一个JavaBean(pojo+相应属性的getter和setter方法),该JavaBean最好实现java.io.Serializable接口 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化的桥梁 立即下载
   

学习了一段时间的ibatis,我觉得hibernate有着ibatis无法替代的优势。

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会越来越好。

nvidia-container-toolkit 国内镜像源安装 nvidia-container-toolkit 国内镜像源安装 阅读详情

相关推荐

从零到一:RK3588平台上的星闪模块驱动移植全解析

本文详细解析了在RK3588平台上移植UB37星闪模块驱动的完整流程,涵盖内核配置、设备树适配、驱动编译、功能测试等关键步骤。通过实践指导,帮助开发者掌握星闪技术在嵌入式系统中的集成与应用,提升无线通信模块的开发效率。

qsc90123456的博客 337

Hibernate优点

Hibernate优点(1) 对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想(2) 透明持久化(persistent)带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Ses

kang123488的博客 406

MTK眼中6G物理层与无线协议的进化之路

提议统一波束和小区级的测量、报告和切换框架/流程,进一步减少移动性切换过程中的中断,采用可扩展框架/流程,允许在不同移动性场景中进行部分用户设备配置更新以实现快速切换,支持用户设备发起的移动性(同步/切换)以降低延迟和因信令交换导致的失败,设计移动性RS以实现空闲状态下的节能和连接状态下的无缝用户体验,实现5G/6G间的无缝互操作移动性,为固定无线接入(FWA)提供潜在增强,构建统一的跨层移动性框架以降低复杂度、减少中断和失败。为适应多样化的流量类型,需要灵活的帧结构和高层时间对齐。

asd199086的博客 1746

Java后端校验框架oval与hibernatevalidator的使用

1 oval 1)Oval 官方地址: http://oval.sourceforge.net/ 2)依赖 <dependency> <groupId>net.sf.oval</groupId> <artifactId>oval</artifactId> <version>1.81</versio...

musi_m的博客 2068

SOC设计必看!Tessent DRC检查中最容易踩的5个坑(附解决方案)

本文针对SOC设计中Tessent DRC检查的常见问题,详细分析了5个最易忽视的陷阱,包括时钟域交叉、扫描链虚连、多电压域规则等,并提供专业解决方案。特别针对芯片设计中的DFT验证难点,分享了经过验证的调试方法和Tessent工具使用技巧,帮助工程师提升DRC检查效率。

weixin_29280657的博客 496

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4375

hibernate与ibatis比较的11大优势

http://hi.baidu.com/laihua2006/blog/item/2955705508f65243574e0050.html   hibernate与ibatis比较的11大优势        Hibernate在解决性能问题方面做得非常好。有了它的缓存机制,使用第三方缓存和数据库连接池,就较好的解决的性能问题。但这些还不够,hibernate给了开发者

zhb123GGGGGG的专栏 454

【软考高级架构】论文范文12——论生成式AI在软件开发中的应用与挑战

随着生成式AI技术的跨越式发展,以大语言模型为代表的生成式AI正在深刻改变软件开发的传统模式。在代码生成、测试构造、文档编写等环节,生成式AI展现出显著的效率提升潜力,但其应用也面临着代码质量不可控、安全漏洞植入、版权合规等严峻挑战。本文以笔者主导的某大型金融企业智能研发辅助平台建设项目为案例,围绕生成式AI在软件开发中的应用实践与应对挑战的策略展开论述。笔者担任系统架构师,负责平台架构设计、模型选型、质量保障机制及安全防线构建。

qq837993702的博客 276

hibernate的11大优势

Hibernate在解决性能问题方面做得非常好。有了它的缓存机制,使用第三方缓存和数据库连接池,就较好的解决的性能问题。但这些还不够,hibernate给了开发者足够的自由,让开发者自己去控制性能问题。     学习了一段时间的ibatis,我觉得hibernate有着ibatis无法替代的优势。     1、开发者都知道,hibernate让我们以oo的方式操作数据库,这让我们看到了hibe

黑鹰 893

风控域——决策引擎系统设计

本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具,可自动化、数据驱动地辅助或替代人工决策,广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能,包括自动化决策、动态规则管理、实时处理和模型集成,以及系统组成,涵盖数据输入层、规则引擎和模型服务层。此外,还探讨了决策引擎的典型应用场景、技术架构、组件设计,以及风控决策引擎系统的技术方案、设计难点和重点。

庄小焱 3320

MIPI D-PHY TX 一致性测试实例解析 Part 02

如果测过1.3.x,并对这组测试的细节已经熟悉的前提下,1.4.x的测试将会变得轻松,因为几乎相同的测试项被用于时钟通道的数据测量。

一只豌豆象的博客 8316

hibernate11大优势(转)

hibernate有着ibatis无法替代的优势。1、 开发者都知道,hibernate让我们以oo的方式操作数据库,这让我们看到了hibernate的强大之处,体验到操作数据的方便。但Gavin King说,hibernate最耀眼之处是hibernate的缓存机制,而不是以oo的方式操作数据库。Hibernate的缓存机制不外乎是一级缓存session,二级缓存sessionFactory,和

hot_allen的专栏 471

2022年灌溉试验设计与数据分析考试试题

2.表2数据为表层0~10cm的原状土离心机土壤水分特征曲线试验数据,(1)请利用R语言nls函数通过Van Genuchten方程对土壤体积含水率和土壤基质势进行拟合;(3)指明土壤基值势为-33 kPa和-1500kPa时的体积含水率。1.请根据表1数据,以灌溉模式为主区,生物炭用量为子区,利用R语言agricolae包生成裂区试验设计试验处理布置图;3.以R工具包factoextra中decathlon2数据集前10列为数据进行PCA分析,要求计算出(1)前5个主成分的特征值、特征向量;

Mrrunsen的博客 266
上一篇: Java 与C#
下一篇: 设计模式:我与Facade模式的亲密接触
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值