Hibernate的优点- -
一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。
二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:
传统的架构:
1) Session Bean <-> Entity Bean <-> DB
为了解决性能障碍的替代架构:
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB
就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。EB的架构效率会差的很远。
3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。
4、分布式,安全检查,集群,负载均衡的支持
由于有SB做为Facade,3个架构没有区别。
四、EJB和Hibernate学习难度在哪里?
EJB的难度在哪里?不在复杂的XML配置文件上,而在于EJB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需要学习App Server和EJB的配置来优化EJB的运行效率。做EJB的开发工作,程序员的大部分精力都被放到了EJB的性能问题上了,反而没有更多的精力关注本身就主要投入精力去考虑的对象持久层的设计上来。
Hibernate难在哪里?不在Hibernate本身的复杂,实际上Hibernate非常的简单,难在Hibernate太灵活了。
当你用EJB来实现持久层的时候,你会发现EJB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。
Hibernate相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用iterator,可以用list,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?
这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员,那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EJB,你第一秒种就已经做出了决定,根本没得选择,比如说集合属性,你只能用Collection,如果是Hibernate,你会在Bag,List和Set之间来回犹豫不决,甚至搞不清楚的话,程序都没有办法写。
分享到:
相关推荐
Hibernate的原理和优点
Hibernate 有很多优点,它可以帮助开发者快速地访问和操作数据库。下面是 Hibernate 的一些优点: * 简洁高效:Hibernate 提供了一种简洁高效的方式来访问和操作数据库。 * 支持多种数据库管理系统:Hibernate 支持...
### ibatis 与 hibernate 之间的比较:优点和缺点 #### 概述 在 Java 开发领域中,对象关系映射(Object Relational Mapping,简称 ORM)是一种将面向对象编程语言中的对象模型与数据库系统中的关系模型相互转换的...
Hibernate 介绍 Hibernate 是一个开源的持久层框架,它提供了一个抽象层来访问关系数据库。它允许开发者使用面向对象编程语言来访问关系数据库,从而简化了数据库交互的过程。Hibernate 的主要特点是将对象关系映射...
Hibernate 的优点有很多,以下是一些主要的优点: * 轻量级封装:Hibernate 对 JDBC 进行了轻量级的封装,使得 Java 程序员可以使用面向对象的编程思想来操作数据库。 * 面向对象编程:Hibernate 支持面向对象的...
标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...
Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作数据库。 JDBC 的缺点 * 代码结构比较繁琐 * 面向纯 SQL 语句的...
通过以上介绍,我们了解到Hibernate是一个强大且灵活的ORM框架,它极大地简化了Java应用程序与数据库之间的交互过程。无论是对于初学者还是有经验的开发者来说,掌握Hibernate都是非常有益的,因为它不仅可以提高...
下面将介绍如何在 Netbeans 中配置 Hibernate。 安装 Netbeans 首先需要安装 Netbeans 5.X 版本,可以从官方网站下载安装包。安装完成后,启动 Netbeans。 安装 NBXDoclet 插件 为了使用 Hibernate,需要安装 ...
Hibernate的优点在于其灵活性和高性能。虽然JDO的编译期转换可能带来一定的性能优势,但Hibernate的运行时转换提供了更方便的开发体验,因为它允许开发者在不影响数据库交互的情况下专注于业务逻辑,而且支持增量...
ORM 的主要优点包括: 1. **提高开发效率**:通过对象模型进行数据库操作,减少了对SQL的依赖,提高了代码的可读性和可维护性。 2. **平台无关性**:Hibernate 支持多种数据库,如 MySQL、Oracle、PostgreSQL 等,...
- **新功能介绍**:在第 3 版本中,重点介绍了 Hibernate 4.2 的新特性和改进之处,包括但不限于: - **增强的性能优化**:提高了查询执行效率和内存利用率。 - **扩展的 API 支持**:增加了更多的 API 方法,方便...
五、Hibernate Spatial 4 的优点 Hibernate Spatial 4 提供了对空间几何对象的数据库操作支持,包括空间查询、空间索引和空间分析等功能。它还提供了与其他 Hibernate 项目的集成支持。 六、结论 Hibernate ...
Hibernate 优点** - **无需依赖容器**:降低了开发难度,减少了代码量,加快了开发周期。 - **封装 JDBC**:自动生成高效 SQL 代码。 - **状态管理**:提供对象状态的管理,例如瞬态、持久化和分离状态。 - **HQL*...
在实际应用中,开发者可以根据具体情况进行权衡,甚至结合两者的优点,例如使用Hibernate进行常规操作,而在性能关键点采用JDBC优化。重要的是理解它们的工作原理,以便在不同的开发环境下做出明智的决策。
- **优点**: - 易于使用,能够极大地提高开发效率。 - 提供了强大的查询语言——HQL(Hibernate Query Language)。 - 支持多种数据库,具有很好的可移植性。 - **应用场景**:适用于各种规模的应用程序,从小型...
**JDBC的优点**: - 直接与数据库交互,提供了简单且跨平台的接口。 - 具有高度灵活性,允许编写复杂的SQL语句。 **JDBC的缺点**: - 面向过程,无法充分利用面向对象编程的优势。 - 代码重复多,如打开/关闭连接、...
使用Hibernate的优点很多: 1. Hibernate不是专门为Java Web项目设计的,它可以被应用在任何Java项目中,包括Java SE项目。 2. Hibernate可以显著减少代码量。在没有ORM框架的时代,程序员需要编写大量的JDBC代码...