看了一些文章,结合自己的i些看法,得到以下几点意见:
1.除了1对1的关联之外,其他的关联设置建议根据实际情况设置延时加载.
2.session放在ThreadLoacal中去做控制,这样既节省了session来回打开,关闭的开销,又方便的跨session的事务操作,类似于事务传播
3.尽量避免使用联合主键,而去使用代理主键.
4.使用,同一个数据对象,使用2套对象模型.一个是具有全部属性的,还有1个是只存在主外键属性的.其实也可以多写hql,只是查询的时候只是查询我们需要的字段,而后封装成我们需要的对象.
5.合理使用hibernate的缓存机制.1级缓存是默认开启的,及时清除不需要的一级缓存数据:由于Hibernate默认采用一级缓存,而在 session的生命期间,所有数据抓取之后会放入一级缓存中,而当数据规模比较庞大时,抓取到内存中的数据会让内存压力非常大,一般分批操作数据,被一次操作之后将一级缓存清除,譬如
session.clear(User.class)
6. dynamic-insert,dynamic-update,动态插入和动态更新,指的是让Hibernate插入数据时仅插入非空数据,当修改数据时只修改变化的数据,实现如下:
<class name="User" table="users" dynamic-insert="true/false" dynamic-update="true/false" > </class>
此项 性能提升有限
7.inverse='true'的使用,一般情况下在 one-to-many 关系中,将 many 一方设为主动方( inverse=false )将有助性能的改善
8.如果要追求批量删除的性能,应该使用hibernate的batch功能,如下:session.createQuery("delete from DeleteTest dt where dt.tid > 1").executeUpdate();
9.修改hibernate.properties或hiberante.cfg.xml,增加了以下两句:
hibernate.jdbc.fetch_size=50 对查询效率明显增加
hibernate.jdbc.batch_size=100 对批量操作效率增加
减少操作数据库的次数
或 hiberante.cfg.xml(Oracle ,sql server 支持,mysql不支持)
<property name="hibernate.jdbc.fetch_size">50</property>
<property name="hibernate.jdbc.batch_size">30</property>
10.多使用filter过滤结果集,如下:
session.createFilter(parent.getChildren(),"").setFirstResult(0),setMaxResult(10).list();
session.createFilter(parent.getChildren(),"where this.age>25").list();
11.Hibernate Iterator方法在对内存消耗上有一定的减缓作用,常用于大数据量的处理,如下:
while(it.hasNext()){ YouObject object = (YouObject)it.next(); session.evict(youObject); sessionFactory.evice(YouObject.class, youObject.getId()); }
12.复杂逻辑尽量自编hql去完成查询工作,避免hibernate自操作,对于hibernate的初使用者是相当好的解决方案!
最后添加robbin对hibernate性能调优的一些建议:
1、使用双向一对多关联,不使用单向一对多
2、灵活使用单向多对一关联
3、不用一对一,用多对一取代
4、配置对象缓存,不使用集合缓存
5、一对多集合使用Bag,多对多集合使用Set
6、继承类使用显式多态
7、表字段要少,表关联不要怕多,有二级缓存撑腰
暂时这么多,下次想到再写吧!
分享到:
相关推荐
综上所述,Hibernate性能优化涉及多个层面,包括但不限于数据库设计、HQL编写、API选择、配置参数调整、缓存管理、延迟加载以及事务控制策略等。通过对这些方面的综合考量和优化,可以极大地提升Hibernate应用程序的...
### 优化Hibernate性能的几点建议 #### 一、调整Fetch Size以提高性能 在使用Hibernate进行数据查询时,Fetch Size的设置对性能有着显著的影响。Fetch Size是指每次从数据库中取出的数据行数,默认情况下,Oracle...
【提高Hibernate性能】 在开发大型企业级应用时,ORM框架如Hibernate在处理大量数据时可能会出现性能瓶颈。针对这种情况,优化Hibernate的配置和使用策略至关重要。以下是一些提高Hibernate性能的关键点: 1. **...
本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_level1”,来详细解析一级缓存的工作原理及其优化策略。 一级缓存是Hibernate内置的一种缓存机制,它存在...
### Hibernate性能:性能、规模与风险初评 #### 一、引言 随着软件系统的不断发展,数据持久化技术成为现代应用程序不可或缺的一部分。其中,Hibernate作为一款流行的Java ORM(Object Relational Mapping)框架,...
以下是一些关于Hibernate性能优化的关键点: 1. **数据库优化**: - **硬件优化**:磁盘I/O是数据库性能的关键,选择高速度、低寻道时间的磁盘可以显著提升读写速度。 - **配置文件优化**:针对MySQL,优化`my....
《Hibernate性能调优》 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,被广泛用于数据库操作。然而,如果不合理地使用或配置,Hibernate可能会导致性能瓶颈。本文将深入探讨如何对...
10. **JDBC批处理API**: Hibernate底层使用JDBC的批处理API(Statement.addBatch()和Statement.executeBatch()),用户也可以直接使用JDBC批处理,绕过Hibernate的部分逻辑,获取更高的性能。 11. **性能优化注意...
【标题与描述解析】 ...以上就是关于Hibernate性能优化的一些核心知识点,涵盖了缓存、批处理、查询优化、对象状态管理等多个方面。实际应用中,应根据具体业务需求和系统负载进行调整和测试,以找到最佳的优化策略。
### Hibernate业务层控制详解 #### 一、引言 Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。在实际应用开发中,如何有效地控制事务是确保数据一致性和系统稳定性的...
### Hibernate 性能优化 #### 一、引言 Hibernate 是一款非常强大的对象关系映射(ORM)框架,它能够简化 Java 应用程序与数据库之间的交互过程。然而,对于初次接触 Hibernate 的开发者来说,可能会遇到性能方面...
【标题】:优化 Hibernate 性能的关键策略 【描述】:在使用 Hibernate 进行数据库操作时,性能问题时常出现,但通过适当的调整和优化,我们可以显著提高 Hibernate 的执行效率,甚至达到接近或超过直接使用 JDBC ...
本文将深入探讨Hibernate中的事务和并发控制,这对于开发高效、稳定的数据库应用至关重要。 首先,我们来理解Hibernate中的事务管理。在数据库操作中,事务是保证数据一致性的重要手段。一个事务包含了一组数据库...
【hibernate性能优化】是Java程序员在使用Hibernate框架时常关注的话题。Hibernate作为一个强大的对象关系映射(ORM)工具,可以极大地简化数据库操作,但在处理大量数据或复杂对象关系时,可能会出现性能瓶颈。以下...
### 关于《Beginning Hibernate: For Hibernate 5》的知识点总结 #### Hibernate 5 概述 - **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**...
二级缓存是Hibernate性能优化的重要手段,通过合理配置和使用,可以显著减少数据库访问,提高系统响应速度。但同时,需要注意缓存的副作用,如数据一致性、并发控制等问题。在实际应用中,需要结合业务场景和性能...
在Hibernate中,事务、并发控制和缓存管理是至关重要的概念,它们极大地影响了应用程序的性能和数据一致性。 一、Hibernate事务管理 在数据库操作中,事务确保了数据的一致性和完整性。Hibernate提供了四种事务隔离...
综上所述,Hibernate的版本管理机制是其强大并发控制能力的重要组成部分,通过合理利用这一特性,开发者可以在保证数据一致性的同时,提高系统的并发性能。了解并掌握这些知识点,对于开发高效、稳定的Java应用程序...