Hibernate性能优化全面剖析

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate性能优化,包括介绍Java建模、数据库结构等方面。

Hibernate是对JDBC的轻量级封装,因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低。然而,通过正确的方法和策略,在使用Hibernate的时候还是可以非常接近直接使用JDBC时的效率的,并且,在有些情况下还有可能高于使用JDBC时的执行效率。

在进行Hibernate性能优化时,需要从以下几个方面进行考虑:
◆数据库设计调整。
◆HQL优化。
◆API的正确使用(如根据不同的业务类型选用不同的集合及查询API)。
◆主配置参数(日志、查询缓存、fetch_size、batch_size等)。
◆映射文件优化(ID生成策略、二级缓存、延迟加载、关联优化)。
◆一级缓存的管理。
◆针对二级缓存,还有许多特有的策略。
◆事务控制策略。

数据的查询性能往往是影响一个应用系统性能的主要因素。对查询性能的影响会涉及到系统软件开发的各个阶段,例如,良好的设计、正确的查询方法、适当的缓存都有利于系统性能的提升。

系统性能的提升设计到系统中的各个方面,是一个相互平衡的过程,需要在应用的各个阶段都要考虑。并且在开发、运行的过程中要不断地调整和优化才能逐步提升系统的性能。

设计阶段的考虑问题

一个良好的数据库结构有利于系统性能的提升。这里所说的良好结构的数据库并不单纯是指满足数据库设计范式的数据库结构。这是因为,按照数据库范式所设计的数据库只能说在结构上是最优的,没有冗余数据等问题,但在生产过程中并不一定能获得最佳的性能。有时候适当地增加一些数据的冗余虽然增加了数据维护的难度,但可以极大地简化业务的查询,提高数据检索的效率。

在使用Java访问数据库的时候,还存在另外一个问题,就是面向对象的Java语言与关系型数据库之间的矛盾。在这两者之间必然要涉及到一个相互转化的问题,对于这个问题是否能够正确的处理也是影响系统性能的一个重要因素。

综合以上提出的各种问题,在数据库设计阶段要综合考虑以下三个方面的因素。

Java建模

在建立Java对象模型的时候,要考虑数据库持久化的方便性,所建立的Java对象模型应该可以很容易地被数据所存储 http://storage.it168.com/存储,并且数据库中表的结构也是越简单越好。

数据库结构

在设计数据库结构的时候也要考虑到是否可以很容易地用Java对象去表示。这里并不是简单的一个表对应一个对象的直接转换,更重要的是转换后的Java对象应该能够描述出数据间的关系。

所以在设计阶段,对于Java对象和数据库结构要进行综合考虑,也就是可以从两个方向进行考虑,毕竟两者之间不是一个时代的产物,设计的结果应该在两者之间达到一个平衡,虽然不能每一方都达到最优,但也不能造成有一方结构很差的情况。就像装水的木桶,最矮的板子决定水桶的容量。

业务需求

相关推荐