Hibernate有哪些优势

介绍

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

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

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

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

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

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

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

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

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

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

c级联策略,在几对几的关系,正确设置级联策略,想清楚在操作对象一个的同时是否需要级联操作对象b,比如在一对多的父子关系中,删除了父亲一个,需级联删除子很多,这时的一个这端可设置级联=吧境?这样在删除时,会自动删除子,但对子的操作不会影响父.Cascade还有其他的属性值,只要设置正确,可提升性能。

d,懒惰的策略,正确设置延迟加载策略同样会提升性能,在一对多或多对多中,通常总应该延迟加载很多的一方的到内存。设置了懒=" true ",首先发送sql语句,加载自己到内存,到需要时才加载级联对象,懒=癴alse”,则会同时加载自己和级联对象到内存。

e,另外还有集合的性能(组、列表,地图,数组),都应正确设置。

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

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

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

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

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

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

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

Hibernate有哪些优势