`
ninebirds
  • 浏览: 79860 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate的性能:插入很快,可查询为什么非常慢?

阅读更多

JDBC不但快,而且占用内存少,峰值内存75MB,Hibernate List其次,峰值内存占用140MB,Iterator方式下,观察到内存以每秒几十K的速度增加,估计不增加到140MB,是不会完成测试过程的,由于不耐烦等待,终止测试。

、JDBC仍然是最快的访问方式,不论是Create还是Read操作,都是JDBC快。

2、Hibernate使用uuid.hex构造主键,性能稍微有点损失,但是不大。

3、Create操作,JDBC在使用批处理的方式下速度比Hibernate快,使用批处理方式耗用JVM内存比不使用批处理方式要多得多。

4、读取数据,Hibernate的Iterator速度非常缓慢,因为他是每次next的时候才去数据库取数据,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存是几十K几十K的增加。

5、读取数据,Hibernate的List速度很快,因为他是一次性把数据取完,这一点从观察任务管理器的java进程占用内存的变化也可以看得很清楚,内存几乎是10M的10M的增加。

6、JDBC读取数据的方式和Hibernate的List方式是一样的(这跟JDBC驱动有很大关系,不同的JDBC驱动,结果会很不一样),这从观察java进程内存变化可以判断出来,由于JDBC不需要像Hibernate那样构造一堆Cat对象实例,所以占用JVM内存要比Hibernate的List方式大概少一半左右。

7、Hibernate的Iterator方式并非一无是处,它适合于从大的结果集中选取少量的数据,即不需要占用很多内存,又可以迅速得到结果。另外Iterator适合于使用JCS缓冲。

上述的测试结果和结论不具备普遍适用性,仅供参考,并且也不能作为任何软件性能好坏的依据。实际上我认为影响测试结果最大的因素是JDBC驱动的选取,不同的JDBC驱动的实现会带来非常不同的结果。

Hibernate Iterator应该是标准的JDBC Result的封装,速度应该不会和JDBC有如此巨大的差距,应该就像上面楼主的测试结果一样,大概是1半的速度,这样比较正常。

分享到:
评论

相关推荐

    hibernate性能:性能、规模、风险 初评

    ### Hibernate性能:性能、规模与风险初评 #### 一、引言 随着软件系统的不断发展,数据持久化技术成为现代应用程序不可或缺的一部分。其中,Hibernate作为一款流行的Java ORM(Object Relational Mapping)框架,...

    Beginning Hibernate: For Hibernate 5

    《Beginning Hibernate: For Hibernate 5》是一本非常适合 Java 开发者入门 Hibernate 的书籍。它不仅覆盖了 Hibernate 5 的基础知识,还介绍了与之相关的前沿技术,如 NoSQL 和 Java 8。通过本书的学习,读者可以...

    hibernate性能优化方案

    因此,合理地进行Hibernate性能优化显得尤为重要。 #### 二、数据库设计调整 1. **降低关联复杂性**:减少实体间的关联复杂度,避免过多的一对多或多对多关系,从而减少查询次数和复杂度。 2. **避免使用联合主键*...

    hibernate性能测试代码

    在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据访问。本话题将深入探讨“Hibernate性能测试代码”,以帮助我们理解如何有效地评估和...

    Hibernate性能优化:一级缓存

    在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_...

    hibernate入门数据简单插入

    标题"hibernate入门数据简单插入"指的是使用Hibernate框架进行数据库的基本操作,特别是数据的插入。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在应用程序中处理数据库对象,而无需直接编写...

    Hibernate性能优化

    《Hibernate性能优化》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,性能问题逐渐显现,因此对Hibernate进行性能优化变得至关重要。本篇...

    精通Hibernate:Java对象持久化详解.zip

    《精通Hibernate:Java对象持久化详解》是一本深入解析Hibernate技术的专著,它主要针对Java开发者,旨在帮助他们理解和掌握Java对象持久化的精髓。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了...

    hibernate 入门:10分钟跑起这个hibernate 示例程序 (图解)

    hibernate 入门:10分钟跑起这个hibernate 示例程序 (图解、附源码http://download.csdn.net/source/650851)

    Hibernate part 14:查询及数据库并发事务

    **描述:**描述为空,但我们可以推测博客内容可能包含实际示例、最佳实践以及对Hibernate查询API和事务管理机制的详细解释。 **标签:“源码”和“工具”** "源码"标签表明博客可能包含了与Hibernate源代码相关的...

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    在 Java web 开发中, Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在使用 Hibernate 进行数据库操作时,经常会遇到 "No Hibernate Session ...

    Hibernate案例:办公自动系统

    - 配置Hibernate:设置数据库连接信息,创建SessionFactory。 - CRUD操作:通过Session接口进行增删改查操作,例如,保存一个新用户只需调用`session.save(user)`。 - 查询优化:利用缓存机制提高性能,或者通过...

    精通Hibernate:Java对象持久化技术详解.pdf

    《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...

    Hibernate性能优化研究.pdf

    ### Hibernate性能优化研究 #### 一、引言 随着企业级应用的发展,高效的数据持久化技术成为了提升系统性能的关键因素之一。Hibernate作为一种流行的面向Java环境的对象关系映射(Object-Relational Mapping,简称...

    Hibernate插入数据

    10. **批量插入**:对于大量数据插入,可使用SQL的批处理或Hibernate的批处理功能,如Session的batch_size配置,提高性能。 在实际开发中,我们还需要注意一些优化技巧,比如懒加载(@OneToMany、@ManyToOne等关系...

    Hibernate基础和入门:新建表和插入表

    17. **日志配置**:Hibernate允许配置日志输出,这对于调试和优化性能非常有帮助。 18. **实用工具类**:例如,`HibernateUtil`类通常用于简化SessionFactory的获取和关闭,确保资源的正确释放。 以上就是...

    hibernate多表联合查询

    在关系型数据库中,这种查询非常常见,尤其是在需要从不同表中获取关联数据的情况下。 在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **...

    hibernate的多态查询

    标题“hibernate的多态查询”指的是在Hibernate框架中,如何进行涉及不同子类的对象查询,这是ORM(对象关系映射)中的一个重要特性,旨在提高代码的灵活性和可扩展性。多态查询允许我们编写一次查询,而无需关心...

    优化Hibernate性能的几点建议

    在使用Hibernate进行数据查询时,Fetch Size的设置对性能有着显著的影响。Fetch Size是指每次从数据库中取出的数据行数,默认情况下,Oracle数据库的JDBC驱动程序中的Fetch Size被设置为15。然而,将Fetch Size增加...

Global site tag (gtag.js) - Google Analytics