`
MauerSu
  • 浏览: 509372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

hibernate性能对比文章

阅读更多

源:http://daquan198163.iteye.com/blog/148055

评:

也不仅仅是hibernate一个框架的问题了,其实可以上升到O/R Mapping的应用策略问题
几乎每隔几周就会出现类似的讨论,比如 主题: 有没有Hibernate的成功大型项目实现?Hibernate,憋脚的ORM框架
这说明这个问题还是很有讨论的必要。

过去的几次比较热烈的讨论我基本都看了,焦点主要集中在这几个方面:

1、以数据库为中心建模 VS 以领域模型为中心建模:
   老开发人员大多倾向于前者,因为比较符合过去的开发习惯,另外他们强调数据库的生命周期大于App
   向我这样的只有几年工作经验的往往会倾向于后者,因为这能更充分发挥ORM的威力,更符合OO,免去很多维护DB的繁琐工作。

2、Hibernate VS iBatis/JDBC:
   担心失去对SQL待控制权,导致不能做优化,DBA反对
   Hibernate是在JDBC之上的又一层框架,因此想当然的认为其性能不如iBatis/JDBC(我认为这个结论不成立,因为引入一个ORM层给了我们更多机会去优化性能,比如一二级缓存、lazyload、查询缓存,并且方式更优雅)。参考为什么ORM性能比iBATIS好? http://robbin.iteye.com/blog/77338?page=2#comments
   担心OpenSessionInView模式有性能问题(http://www.iteye.com/topic/17501)
   Hibernate无法应付复杂查询(我认为这不是问题,HQL和criteria查询能力很强,再不济还可以用SQL啊)

3、对Hibernate等ORM框架能否胜任大型项目的怀疑:
   其实项目大小不是技术选型的主要考虑,关键看项目类型,OLTP还是OLAP、广而浅型的还是窄而深型的、数据量大小等等,这些因素更能影响结果

4、Hibernate学习成本高
   不可否认,相对于spring、struts,Hibernate是一个学习曲线陡峭的框架,但是我觉得综合考虑开发效率和长期收益,还是值得学习和采用的

其实有一个事实被很多人忽略了——Hibernate只是对JDBC的一个封装,因此它可以跟iBatis/JDBC在同一个项目中并存,就好比突击步枪和狙击步枪的关系,两者都有存在的价值和适用场合,不能互相取代。
但是,显然突击步枪是大量装备的通用武器,而狙击步枪是少量装备的特种武器

参考帖子:
OpenSessionInView会不会影响性能?
选择Hibernate还是iBatis?
选择Hibernate还是iBatis?
我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
Hibernate,憋脚的ORM框架
对迷茫于Hibernate/JPA的人提一些建议。
为什么ORM性能比iBATIS好?

分享到:
评论

相关推荐

    很不错的Hibernate解决方案.pdf

    《很不错的Hibernate解决方案》一文通过对比几种流行的持久化技术(如JDBC、EJB、JDO等),论证了Hibernate作为ORM工具的优势,并详细介绍了其在物流系统中的具体应用方法。 1. **模型设计**:首先需要根据物流系统...

    hibernate框架调用存储过程

    本篇文章将深入探讨如何在Hibernate框架中调用存储过程,并与JDBC调用存储过程的方式进行比较。 首先,我们要了解存储过程是什么。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可被多次调用,减少了网络...

    mysql的驱动包,适合使用hibernate和jpa

    本篇文章将深入探讨MySQL驱动在Hibernate和JPA中的使用,以及为什么选择特定的驱动版本对于避免问题至关重要。 首先,MySQL驱动主要由Java JDBC(Java Database Connectivity)接口提供,它是Java标准版(Java SE)...

    Hibernate_Session_Transaction

    这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与数据库交互的接口,它扮演着应用程序与数据库之间的桥梁角色。与Web开发中的`HttpSession`不同,`Hibernate Session`与JDBC的`...

    hibernate map 集合映射

    这篇文章将深入探讨Hibernate中的集合映射机制,包括其基本概念、类型以及如何在实际开发中进行配置。 ### 1. Hibernate集合映射的基本概念 集合映射是Hibernate中一个核心的概念,它允许我们将数据库表中的多对一...

    Java_Hibernate QBC条件查询对比

    本篇文章将深入探讨Hibernate中的QBC(Query By Example)条件查询与传统的HQL(Hibernate Query Language)查询的对比,帮助开发者更好地理解和选择适合的查询方式。 QBC(Query By Example)是Hibernate提供的一...

    Intro to Hibernate TCJUG

    本篇文章将基于给定文件中的信息进行深入解析,重点在于介绍 Hibernate 的基础知识及其在 Java 开发领域的重要作用。文件提供的信息虽然较为简略,但已经涵盖了 Hibernate 的概述、演示大纲、关于演讲者 Steve ...

    hibernate入门课件--introduce hibernate.pdf

    通过使用Hibernate,可以显著减少与数据库交互所需的代码量,并提高应用程序的性能和可维护性。该框架遵循LGPL许可,因此可以在商业产品中使用。 #### 三、为什么要使用Hibernate? 1. **专注于领域模型**:使用...

    hibernate映射心得 原创

    2. **映射方式**:XML映射文件(hibernate.cfg.xml和.hbm.xml)和注解映射的使用,对比两者的特点和适用场景。 3. **实体类映射**:如何定义实体类,以及如何将类的属性与数据库字段对应,包括基本类型、复杂类型...

    hibernate和jdbc测试

    对于性能测试,可以比较使用JDBC和Hibernate执行相同任务的时间消耗,评估哪种方式更高效。同时,要关注内存使用情况,因为ORM框架可能会增加内存开销。 在进行测试时,使用单元测试框架,如JUnit,可以帮助自动化...

    hibernate3.3.zip

    本篇文章将深入探讨Hibernate 3.3的核心API,帮助读者掌握这一强大的工具。 1. Hibernate核心API概述: Hibernate的核心API包括SessionFactory、Session、Transaction、Query等关键类。SessionFactory是线程安全的...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...

    hibernate完全讲解实例演示

    本篇文章将深入讲解 Hibernate 的核心概念,并通过实例演示其用法。 ### 1. Session 状态 在 Hibernate 中,Session 是与数据库交互的主要接口,它负责对象的持久化操作。Session 管理的对象有三种状态: - **...

    最强大的数据库框架,秒杀mybatis、mybatisplus、hibernate

    本篇文章将深入探讨“最强大的数据库框架”,并对比分析Mybatis、MybatisPlus和Hibernate这三大主流框架,以及提及的esdk-master项目。 首先,让我们来看看Mybatis。Mybatis是一个轻量级的Java持久层框架,它允许...

    struts2 hibernate spring博文汇集

    - **Spring与Guice整合**:比较两种轻量级依赖注入框架的特点,并给出整合方案。 - **Spring在Websphere下的部署**:描述在IBM Websphere服务器上部署基于Spring的应用程序时可能遇到的问题及解决方案。 ### ...

    Hibernate 一对多双向映射及乐观锁使用

    **描述解析:** 链接指向了一篇名为“kuangyeyazi”的作者在iteye博客上发布的文章,详细介绍了如何在Hibernate中实现一对多双向映射以及如何应用乐观锁机制。虽然描述内容为空,但我们可以根据标题推测文章内容可能...

    hibernate的HQL的模糊查询

    在Java的持久化框架Hibernate中,HQL(Hibernate Query Language)是专为ORM(对象关系映射)设计的一种SQL方言,用于对数据库进行操作。HQL模糊查询是开发者在进行数据检索时常用的一种功能,它允许我们根据部分...

    关于Clob类型在Hibernate中 的应用小结-- 一篇使用心得.zip

    本篇文章将探讨在Hibernate中如何使用Clob类型来处理大文本数据,主要涉及Clob类型的概念、使用场景、在Hibernate中的配置以及一些注意事项。 Clob(Character Large Object)是SQL标准定义的一种数据类型,用于...

    毕业设计论文-IT计算机-博客系统(struts+hibernate+spring)-源码.zip

    在博客系统中,Hibernate用于将博客文章、评论等业务对象与数据库表进行映射,通过SessionFactory创建Session,然后通过Session执行CRUD(Create、Read、Update、Delete)操作。此外,Hibernate还支持HQL(Hibernate...

Global site tag (gtag.js) - Google Analytics