hibernate与spring的重要优势 (hibernate框架用法)
本文目录导航:
hibernate与spring的重要优势?
hibernate框架是对jdbc的轻量级别封装,可以运行于任何须要jdbc的场所,它是一个orm(object relation mapping)对象相关映射框架,将传统的相关型数据库模型映射为面向对象的数据库模型,与面向对象的编程思想不约而同,将数据库中的表,映射成pojo对象,使得表中记载看下来像一个JAVA对象一样,封装了向dbms传递sql语句的接口,将程序员从编写复杂少量的SQL语句中摆脱出来,即使sql基础不好的程序员,也能应用hibernate框架提供的api极速成功对数据库的curd(create ,update,read,delete)增删改查操作,上手快,且中运行广,是一个orm的盛行框架. spring框架是个轻量级框架,所谓轻量级1体如今不依赖于容器(不须要特定的容器环境,普通java开发和运转环境即可),2非侵入性(和其余框架松懈耦合,可联结作战,可无缝衔接,也可独自作战)例如spring可与struts与hibernate框架联结经常使用spring可以起到穿针引线的作用,就如同 我要组装一个机器人struts假设是双臂,hibernate是双腿,spring就是衔接它们的身材大框使他们联结上班,spring有两个外围模块,1 ioc/di, 2 aop ioc控制翻转/di依赖注入(ioc成功以容器治理对象的生命周期/di成功面向接口的编程思想,成功高内聚低耦合的设计形式,详细请参考spring的有关书籍不是一两句话能让你明确,宿愿能抛砖引玉)aop面向切面的编程思想(比如spring提供现成的数据库事物处置模块只需经过便捷性能就能成功事物处置性能,不须要程序员再手动编写有关技术处置该方面的代码,让你转心专一于你的名目业务代码的编写,经过便捷的性能成功和软件重要业务内容有关的技术处置层面代码)正如楼上所说spring就像一个粘合剂一样使得您的名目中各个框架组成一个无机的全体.
hibernate框架的好处
一、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之间来回优柔寡断,甚至搞不分明的话,程序都没有方法写。
Hibernate框架之间的相关是什么以及怎样处置
Hibernate是一个开明源代码的对象相关映射框架。
对JDBC启动了十分轻量级的对象封装,使Java程序员可认为所欲为地经常使用对象编程思想来操纵数据库,Hibernate耐久化对象是基于便捷的Java对象(Plain Old Java Objects)以及Java对象汇合。
Hibernate可以运行在任何经常使用JDBC的场所,既可以在Java的客户端程序经常使用,也可以在Servlet/JSP的Web运行中经常使用,最具备反派意义的是,Hibernate可以运行EJB的J2EE架构中取代CMP,成功数据库耐久化的重担。
注:不要将耐久化层逻辑与视图体现层逻辑或许业务逻辑层混合在一同。
要防止正在JSP等视图体现层组件间接访问数据库,将数据耐久代码都放在耐久层中,这样程序更具备柔韧性且可以灵敏地扭转而不会影响到其余层。
举一个例子来讲:假设将Hibernate用其余ORM框架(如JDO或IBATIS)来交流,只须要修正耐久层,而不须要修正其余层的代码。
Java开源--Web框架Struts在视图体现层,驳回Struts框架构建Java Web运行程序。
Web运行程序不同于传统上的网站,这些网站理论仅提供静态页面,而Web运行程序可以和数据交互,当用户与系统交互的时刻,业务逻辑可以给用户一个用户化的照应。
在Web运行程序开展初期,Web运行程序理论是基于JSP(Java Server Pages)的,经常使用JSP编写代码时理论读取数据库、页面设计代码以及控制流程代码都混合在一同(保养过于复杂,亟待提升,尤其是大型名目)。
MVC(Model-View-Controller)体系结构的产生Model示意业务逻辑或许是数据库代码,View代表页面设计代码,而Model实质上是一个Servlet,将客户恳求转发到相应的Action类。
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)形式运行框架的开源框架。
Struts提供了什么性能:1、治理用户的恳求,做出相应的照应2、提供一个流程控制器,委派调用业务逻辑和其余下层处置3、处置意外4、装配须要显示的数据模型5、口头页面验证上方所提及的只管Struts会触及,但是不应该在视图层中产生。
在视图层中引入这些代码,前期保养困难。
6、间接与数据库通讯的代码7、系统的业务逻辑以及验证代码8、事务处置Java开源--J2EE框架Springspring是一个轻量级的J2EE框架。
外围是一个轻量级容器,成功IOC形式的容器,自身是一个全方位的整合框架,在Spring框架下可成功对多个子框架的组合。
Spring的外围即IoC/DI的容器,可认为设计人员成功各个组件之间的依赖相关的注入,使组件之间的依赖性减小,提高了组件的重用性,容器个性使组件可以随便地添加和脱离框架。
Spring的另一个方面使允许AOP,但是AOP框架常识Spring允许的其中一种框架,所以说Spring框架是AOP框架并不是一种失当的形容,但是Spring对AOP的允许使人们愈加关注于Spring的AOP方面的才干,也成了Spring的一大特征。
此外,Spring提供了一个自己的MVC Web框架的处置打算,但Spring并不要求程序员肯定要经常使用该MVC Web框架,而是可以经常使用自己所相熟的MVC Web框架与Spring结合,如Struts Webwork等,它们都可以与Spring整合而成为适宜的处置打算。
Spring还提供其余方面的整合,比如耐久化方面的整合,JDBC、O/R Mapping工具、事务处置等,Spring自己也做了多方面整合的致力,因此Spring是一个全方位的框架。
最后:架构驳回多层非散布式的结构,除数据库这一层外,可以分为体现层(Presentation Layer)、业务逻辑层(Bussiness Logic Layer)和数据耐久层(Persistence Layer),这3层将存在于同一个Web容器中,作为一个全体提供J2EE服务。
定义良好的接口可以相对隔离每一层的职责,使运行更便捷,并且有很好的伸缩性。
数据耐久层是介于业务逻辑层和数据库层之间的桥梁,它封装了与数据库层交互的逻辑,应用ORM(对象相关映射)技术可以齐全成功面向对象的逻辑处置。