J2EE基础:用Hibernate企业框架的优点

j2ee

一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。

二、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个架构没有区别。

四、EB和Hibernate学习难度在哪里?

EB的难度在哪里?不在复杂的XML配置文件上,而在于EB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需要学习App Server和EB的配置来优化EB的运行效率。做EB的开发工作,程序员的大部分精力都被放到了EB的性能问题上了,反而没有更多的精力关注本身就主要投入精力去考虑的对象持久层的设计上来。

Hibernate难在哪里?不在Hibernate本身的复杂,实际上Hibernate非常的简单,难在Hibernate太灵活了。

当你用EB来实现持久层的时候,你会发现EB实在是太笨拙了,笨拙到你根本没有什么可以选择的余地,所以你根本就不用花费精力去设计方案,去平衡方案的好坏,去费脑筋考虑选择哪个方案,因为只有唯一的方案摆在你面前,你只能这么做,没得选择。

Hibernate相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运行原理有什么不同?运行效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用Set,可以用List,还可以用Bag,到底哪个效率高,你为难不为难?查询可以用iterator,可以用list,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?

这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?如果你是一个负责的程序员,那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的适用场合,你会觉得你已经陷入进去拔不出来了。如果是用EB,你第一秒种就已经做出了决定,根本没得选择,比如说集合属性,你只能用Collection,如果是Hibernate,你会在Bag,List和Set之间来回犹豫不决,甚至搞不清楚的话,程序都没有办法写。

时间: 2024-10-25 08:15:06

J2EE基础:用Hibernate企业框架的优点的相关文章

J2EE基础之用Hibernate企业框架的优点

一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系. 二.Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但

J2EE中使用Spring AOP框架和EJB组件

j2ee 快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spring Framework对于J2EE应用程序开发十分具有吸引力.Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面--从监控和审计.缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求. 本文将向您介绍Spring的AOP框架在

走上开放之路: ASP开发人员的J2EE基础(下)

相关文章:走上开放之路: ASP 开发人员的 J2EE 基础(上) ASP/COM 和 J2EE 应用程序模型 接下来研究不同的应用程序体系结构,您可以使用这些体系结构开发 J2EE 应用程序并将 其与相应的 ASP/COM 应用程序体系结构关联起来. 使用 Java Servlets 编程:基础知识 编写 Java Servlets 就可以对来自 URL 的请求进行可编程控制.典型的 servlet 调用 类似于以下步骤: 客户机向 Web 服务器发出请求,将 servlet 命名为 URL

走上开放之路: .NET开发人员的J2EE基础(下)

相关文章:走上开放之路: .NET 开发人员的 J2EE 基础(上) .NET 和 J2EE 应用模型:理解它们的区别 要理解 J2EE 应用程序体系结构的基本概念,第一步是确定如何将现有的 ASP.NET 应用 程序移植到一个基于 J2EE 的模型,或者确定如何从头编写一个 J2EE 应用程序.我们将考 察几个 ASP.NET 模型,以及可能如何将它们转换为根据 J2EE 组件构建的模型.您将看到简 单的"意大利面条式的代码"如何演进为一个更优雅.可复用和可扩展的环境.在研究一些 代

J2EE基础:Servlet实现代理服务器功能

J2EE基础:Servlet实现代理服务器功能. import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class Proxy extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExce

java-JAVA学习以基础为主还是开源框架为主?

问题描述 JAVA学习以基础为主还是开源框架为主? 小弟今年做JAVA将近3年了,感觉技术很一般,最近下定决心好好学学技术.但是又很疑惑,到底是该精力主要放在学习JAVA基础.数据结构.jvm等这些上呢,还是应该多学习开源框架呢,请各位大侠指点迷津. 解决方案 什么都一样,开始需要出结果的时候用框架,有能力了需要重构了再以基础为主,那时候你就可以用你牢固的基础重写框架了 解决方案二: 我自己也是一个Java小学生,感觉还是要首先以基础为主,过一遍Java基础的东西,我之前就是这么做的,认真看了一

java-测试Spring整合hibernate/Struts2框架时,配置文件报奇怪的错误,求解

问题描述 测试Spring整合hibernate/Struts2框架时,配置文件报奇怪的错误,求解 为什么会报无法识别property? 解决方案 怎么都是这种问题,property要包含在bean标签内 解决方案二: Struts2+hibernate+spring整合时错误Struts2+hibernate+spring整合时错误 解决方案三: http://iteye.blog.163.com/blog/static/186308096201210265334689/ 解决方案四: pro

基础电信运营企业数据和业务安全新挑战 —— 创新动态安全技术研讨会在合肥举办

为进一步保障基础电信运营企业的数据和业务安全,探讨基础电信运营企业在"互联网+"时代遇到的各类新兴威胁.安全问题及相应举措,中国通信企业协会通信网络安全专业委员会(以下称:通信安委会).中国信息通信研究院.瑞数信息于2017年4月24日在合肥成功举办了创新动态安全技术研讨会.中国电信集团公司.中国移动通信集团公司.中国联合网络通信集团有限公司以及来自各省基础电信运营分公司50余名专家出席了本次研讨会,深入探讨创新的动态安全防御技术在电信行业的应用.中国通信企业协会通信网络安全专业委员会

J2EE基础:Struts框架初学者从这里入门

j2ee|初学 概述: 1.Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework. 2.采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架. 3.下载地址:http://jakarta.apache.org/struts 背景: 1.Struts最早是作为Apache Jakarta项目的组成部分问世运作.项目的创立者希望通过对该项目的研究,改进和提高Java Serve