快捷搜索:

优化Hibernate性能的几点建议

1、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时刻每次从数据库中掏出的记录条数,一样平常设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,机能会有显着提升,假如继承增大年夜,越过100,机能提升不显着,反而会耗损内存。

即在Hibernate配制文件中进行配制:

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>

<prop key="hibernate.show_sql">false</prop>

<!-- Create/update the database tables automatically when the JVM starts up

<prop key="hibernate.hbm2ddl.auto">update</prop> -->

<!-- Turn batching off for better error messages under PostgreSQL

<prop key="hibernate.jdbc.batch_size">100</prop> -->

<prop key="hibernate.jdbc.batch_size">50</prop>

</props>

</property>

2、假如是超大年夜的系统,建议天生htm文件。加快页面提升速率。

3、不要把所有的责任推在hibernate上,对代码进行重构,削减对数据库的操作,只管即便避免在数据库查询时应用in操作,以及避免递归查询操作,代码质量、系统设计的合理性抉择系统机能的上下。

4、 对大年夜数据量查询时,慎用list()或者iterator()返回查询结果,

(1)。 应用List()返回结果时,Hibernate会所有查询结果初始化为持久化工具,结果集较大年夜时,会占用很多的处置惩罚光阴。

(2)。 而应用iterator()返回结果时,在每次调用iterator.next()返回工具并应用工具时,Hibernate才调用查询将对应的工具初始化,对付大年夜数据量时,每调用一次查询都邑花费较多的光阴。当结果集较大年夜,然则含有较大年夜量相同的数据,或者结果集不是整个都邑应用时,应用iterator()才有上风。

5、在一对多、多对一的关系中,应用延迟加载机制,会使不少的工具在应用时方会初始化,这样可使得节省内存空间以及削减数据库的负荷,而且若PO中的聚拢没有被应用时,就可削减互数据库的交互从而削减处置惩罚光阴。

6、对含有关联的PO(持久化工具)时,若default-cascade="all"或者 “save-update”,新增PO时,请留意对PO中的聚拢的赋值操作,由于有可能使得多履行一次update操作。

7、 对付大年夜数据量新增、改动、删除操作或者是对大年夜数据量的查询,与数据库的交互次数是抉择处置惩罚光阴的最紧张身分,削减交互的次数是提升效率的最好道路,以是在开拓历程中,请将show_sql设置为true,深入懂得Hibernate的处置惩罚历程,考试测验不合的要领,可以使得效率提升。尽可能对每个页面的显示,对数据库的操作削减到100——150条以内。越少越好。

以上是在进行Struts+hibernate+spring进行项目开拓中,对hibernate机能优化的几点心得。

您可能还会对下面的文章感兴趣: