Hibernate有哪些优势

技术Hibernate有哪些优势这篇文章主要为大家展示了“Hibernate有哪些优势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hibernate有哪些优势”这篇文章吧。

本文主要给大家展示“Hibernate有哪些优点”,简单易懂,组织清晰,希望能帮你解决疑惑。让边肖带领大家学习《冬眠有什么好处》一文。

1.开发人员都知道Hibernate允许我们以oo模式操作数据库,这让我们看到了Hibernate的强大,体验到了操作数据的便捷。但Gavin King表示,Hibernate的亮点在于Hibernate的缓存机制,而不是在oo模式下操作数据库。Hibernate的缓存机制无非是一级缓存会话、二级缓存sessionFactory和第三方缓存,比如ehcache。也就是说,Hibernate * * *的很大一部分是它的缓存。在我们理解这一点之前,要真正理解Hibernate的缓存太难了,我还没有真正理解它。

2.可维护性:ibatis提倡编写sql语句,将sql语句放入一个xml文件中。这种方式获得了很多开发者的青睐,一句话,很容易维护。但是Hibernate也有这个功能,而且比ibatis更强大。Hibernate的命名查询/命名参数查询是将hql语句放在一个单独的xml文件中,这仍然允许人们以面向对象的方式操作数据,这受到了大量遵循oo方式的开发人员的喜爱,而不是用oo方式编写代码,然后改变思维,以面向关系的方式编写那些sql语句。但是Hibernate不仅做到了这一点,它的原生sql查询方法完全满足了sql语句的偏好。像ibatis一样,Hibernate将sql语句放在配置文件中。

3.性能:我坚信Hibernate的性能不是问题。想想有多少中小型项目在使用Hibernate。你还怀疑Hibernate的性能吗?在集成了真正的性能瓶颈所在的spring Hibernate之后,可以使用集成了spring的jdbc或者直接编写存储过程。但首先我们要确认,这真的是性能瓶颈。我认为我们不应该认为性能问题是理所当然的。所谓的性能问题阻碍了很多人。

在我看来,性能无非就是发送了多少条sql语句。性能好,发送sql语句少,性能差,即发送大量sql语句。Hibernate在解决性能问题方面做得很好。

借助其缓存机制,使用第三方缓存和数据库连接池可以更好地解决性能问题。

但这些还不够。Hibernate给了开发人员足够的自由来自己控制性能问题。

我认为开发人员可以在以下几个方面进行自我调整:

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

B.刷新会影响性能,频繁刷新会影响性能,尽量减少不必要的刷新。

c级联策略:在几对几的关系中正确设置级联策略,在操作对象a的同时弄清楚是否需要级联操作对象B,比如一对多的父子关系中,删除父一,需要级联子多。此时可以在一个的末尾设置cascade="delete ",这样在删除一个的时候会自动删除子代,但是子代的操作不会影响父代。Cascade还有其他属性值,如果设置正确,可以提高性能。

d、偷懒策略,正确设置延迟加载策略也会提高性能。在一对多或多对多中,装载许多的人的记忆应该总是被延迟。设置了lazy=“true”。首先,发送sql语句,将自己加载到内存中,然后在需要时加载级联对象。lazy=“false”,self和级联对象都将被加载到内存中。

E.此外,应该正确设置集合(集合、列表、映射、数组)的性能。

F.正确使用第三方缓存。在读操作频繁,写操作很少的情况下,使用第三方缓存可以大大提高性能。例如,ehcache的缓存策略包括:只读、读写和notstrict读写。

G.随着Hibernate新版本的发布和技术的发展,相信Hibernate的性能会越来越好,所有的性能都不是不使用Hibernate的原因。

4.Hibernate不仅作为持久层的orm框架存在,在dao层也有很多持久化操作。

如今,当注释成为主流时,Hibernate迅速做出了响应,使得xml部署描述符成为可选的。Hibernate注释只需要一个@Lob来处理大字段。

Hibernate search以轻量级的方式封装了Lucene,全文检索变得非常简单。

Hibernate验证器被认为是最合理的验证方法。验证策略直接依附于贯穿所有层的领域模型,这种web框架不需要xml验证,大量的非null /null判断不再出现在代码中。

5.jbpm,Jbpm业务流程引擎的持久层由Hibernate实现。Hibernate是使用jbpm所必需的。我认为业务流程管理极其重要。在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有哪些优势”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/137229.html

(0)

相关推荐

  • 什么是进程间通信

    技术什么是进程间通信这篇文章主要介绍“什么是进程间通信”,在日常操作中,相信很多人在什么是进程间通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是进程间通信”的疑惑有所帮助!接下来,

    攻略 2021年10月23日
  • 如何理解Java MeteoInfo解析与绘图代码教程

    技术如何理解Java MeteoInfo解析与绘图代码教程这篇文章主要讲解了“如何理解Java MeteoInfo解析与绘图代码教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究

    攻略 2021年10月21日
  • Swift中字符串类型及常用方法有哪些

    技术Swift中字符串类型及常用方法有哪些这篇文章主要介绍了Swift中字符串类型及常用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 构造

    攻略 2021年11月6日
  • ES 添加字段默认值

    技术ES 添加字段默认值 ES 添加字段默认值ES 新增字段支持过滤
    业务背景
    当我们在使用多维度检索时,mysql显然已经不能满足我的的使用场景,尤其涉及到表之间的join且数据量较大时,mysql的

    礼包 2021年11月22日
  • 怎么用Vue实现大屏页面的屏幕自适应

    技术怎么用Vue实现大屏页面的屏幕自适应本篇内容介绍了“怎么用Vue实现大屏页面的屏幕自适应”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年10月22日
  • Java如何调用Google API spelling check拼写检查

    技术Java如何调用Google API spelling check拼写检查这篇文章将为大家详细讲解有关Java如何调用Google API spelling check拼写检查,文章内容质量较高,因此小编分享给大家做

    攻略 2021年10月23日