hibernate框架的作用是什么(hibernate框架的好处)

本文目录
- hibernate框架的好处
- Hibernate的主要功能及用法
- spring和hibernate有什么区别分别都是干什么的
- Hibernate框架适用于什么项目说明其优劣性
- Hibernate是用于什么的框架
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可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
spring和hibernate有什么区别分别都是干什么的
spring和hibernate有什么区别?分别都是干什么的?
hibernate 是一个数据持久层的框架,只管 怎么去访问及操作数据库的数据.
spring 是一个更加强大的框架,是为J2EE 应用程序开发提供集成的框架,体现在其简单性、可测试性和松耦合上,同时对面向切面编程也有支撑的.
再简单打个比方,
hibernate 是 仓库的仓储管理人员,负责货物的仓储管理.
spring 就是 管理层的核心领导,负责协调调度,以保障企业的良好运作.
以下机构分别都是干什么的?有什么区别?
不同部门的纪律检查委员会是负责处理违犯党的纪律的情况下,以调查和处理党的领导干部和监督在公安机关负责调查违反纪律警方人员,该检察院国家法律监督,主要是皮雀纯负责国家工作有关的犯罪,及时发现和处理与犯罪审查逮捕和审查起诉职责,廉政公署(ICAC)调查违反的法律和纪律的官员, *** 机构的各级负责接受的请愿信访局,并协调处理的投诉。
ado 和 odbc有什么区别,分别是干什么的?
界面在VC里面做,需要建立exe工程,使用ado或者odbc建立都行,这两者是连接数据库的两种不同方法,ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(岁州应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编燃咐写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
各自连接数据库和执行sql的方式有点不同,但都可以实现操作数据库。
cobol中batch和online有什么区别?都是干什么的?
batch:指的是非人工操作,由计算机自动执行cobol编译好的可执行文件,类似于计划任务:到了 特定时间自动执行。执行时间一般在夜间。周期有,日次,周次,月次之分。
online:指的是人工操作。一般是操作由带有画面的程序,直接操作画面上的各个控件。进而操作数据库等等。
java web start和tomcat有什么区别?分别是干什么的?
java web start 是种技术,和tomcat没有什么关系,你可以百度下
tomcat是web容器,和asp中的iis一样
bank中的clerk和cashier分别是干什么的?有什么区别?
clerk银行职员,普通员工
cashier收款员(商场等)
口袋怪兽龙牙和龙鳞有什么区别都是干什么的
龙牙不是能加龙系攻击,而是提升龙系招式威力10%,你去流星瀑布,有一个龙系训练师,不断变换场景,多与他打几次,他就会出宝宝龙,他的宝宝龙身上100%有龙牙,小偷即可。另,不嫌麻烦的话,在四大天王山洞入口处池塘,用高杆钓鱼,能钓到哈克龙,5%几率携带龙牙。野生的宝宝龙只有龙鳞啊。
龙鳞原是海刺龙进化道具,386里用水之石代替了,所以没用,卖了吧。
Hibernate框架适用于什么项目说明其优劣性
Hibernate框架基本上适用于所有项目,其优点在于hibernate对表的级悉颂悉联操作,如何你操作一条数据对很多表的数据都有影睁乎响,hibernate的级联会自动帮你维护表里面的数据,前提是要配置级联选项。
其二优点在于hibernate跨数据库,我想只要是程序员,都希望自己的项目开发后适用于所有的数据库,不只是针对某一种数据库,如果单纯的用jdbc去操作数据库,那么就必须编写sql语句,不同的数据库的sql语句稍微有差距,那么项目肯定是针对某个数据库进行开发。要想hibernate的项目实用所有数据,前提是不要使用hibernate的纯sql查询。
一般大项目都是对性能要求很高,也就是并发量很大,整个项目的性能瓶颈都压在了数据库上,sql语句的好坏直接影响性能,如果不精通hibernate的查询语句和樱敬hibernate管理的对象的状态的区别就不要使用hibernate。什么是精通hibernate ,你懂的。
Hibernate是用于什么的框架
我来简单说下吧!
HIbernate是一种ORM(Object Relation Mapping)就是对象关系映射,Hibernate可以轻松的把数据库中的表映射成我们类描述的对象(一般而言,一张表或者一个视图会对应程序中的一个类),这样在我们连接数据库的时候,可以像访问对象一样简单的访问数据库中的表,如果对对象进行修改,修改的结果Hibernate会自动帮你保存回数据库,你就不用组织SQL语句,和打开关闭数据库那么复杂的操作了。Hibernate提供的查询语句是HQL,是一种面向对象的查询方式,很简单。并且Hibernate会使你的程序与具体的数据库分开(一般情况下,不同的数据库提供的SQL语句是不完全相同的,具有数据库相关性)Hibernate通过方言的形式在配置文档中屏蔽了这种数据库的异构性。
简单说Hibernate方便了程序员对数据库的操作,同时屏蔽了数据库的异构性。
但是Hibernate不适合用于高性能的数据库,如果数据库的数据量大,访问频繁,需要性能优化,用Hibernate很显然不是一个很好的选择。因为通用的、简便的东西,性能肯定不行。
Hibernate开发过程很简单,Hibernate需要您指定一个对象关系映射文件,就是数据库中的哪个表,对应于程序中的那个类,表中的哪些字段对应于程序中类的哪些属性。这样Hibernate才能帮你完成映射。(以前用的是xml配置文档进行映射,现在多使用标注(annotation))。
Spring有两个核心技术,就是AOP面向切面编程,和IOC依赖注入。简单的说AOP就是切面编程,如果您想理解切面编程,您需要具备java设计思想中的代理思想。所谓代理,就是在一个对象中的方法执行前和执行后可以插入些业务处理之外的代码(主要是,日志、异常处理和session控制等)。这样,这些与业务无关的逻辑就可以单独编写,然后插入到那些需要的地方。想进一步了解AOP,请学习java的代理模式(动态代理模式)。IOC是依赖注入,这个是java的创建模式,(如果想深入了解依赖注入,请参考java的工厂模式)。实际Spring就是一个大的工厂,根据用户提供的xml(现在是标记annotation)配置文档,创建用户描述的对象,并完成对象间依赖关系的赋值,这就是IOC思想,如果您不明白,请参考工厂模式(静态工厂模式,工厂模式和抽象工厂模式)。
Struts实际上是MVC中的V就是View显示,M是modle一般由Hibernate提供,C是controller一般由Spring来提供。(我这里专门指SSH框架,别的框架MVC对应的也不同)。Struts的核心思想是过滤器,了解过滤器模式请看(责任链模式)。Struts实际上完成的功能有三个,一个是界面的显示,他提供了一些像html标记一样的标签。然后是过滤,将请求进行过滤,最后是制定请求提交和跳转的方向。
以上是个人观点,不保证权威!

更多文章:
mathtype公式编号换成(怎样修改MathType公式编号的格式)
2026年1月1日 05:15
access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)
2025年9月7日 11:00
surrendered是什么意思(提单问题surrendered 什么意思)
2026年5月21日 22:00
mysql和sqlyog区别(SQLyog和MySQL自带工具哪个好用)
2025年10月7日 07:30
school report(申请美国本科School report和official transcript 的问题)
2026年3月11日 00:15
ubuntu进入root用户(ubuntu切换到root用户)
2026年5月11日 23:15
sftpget到指定目录(centos7 中使用sftp窗口的get命令下载文件到Windows,请问下载到了Windows的哪个目录)
2026年1月30日 22:00
wps activex控件怎么启用(为什么我的安全设置不允许ActiveX控件!急!)
2025年6月30日 02:15
电脑access数据库下载(access数据库在电脑上怎么下载安装)
2025年9月22日 10:00
sql语句高到低排序(如何用数据库sql把一列数据从大到小排列)
2026年9月12日 18:30
双向可控硅的触发原理图及原理是什么?数据结构——图graph(基础概念)
2026年8月28日 11:15
fclose(stdout)什么意思(freopen在竞赛怎么用)
2026年8月1日 06:30











