- 0
- 0
- 约3.75万字
- 约 29页
- 2026-01-07 发布于北京
- 举报
3、具体内容(重点)
关于Hibernate开发,从2005年被广泛的使用,但是对于Hibernate我个人有两点总结:
·不说,在很大的程度上Hibernate还是现在各个公司所广泛使用的框架;
·Hibernate由于设计的较早,而且自动化支持较高,所以要比一些其它的框架性能低一些。
3.1、Hibernate发展的背景
Hibernate本意是冬眠,主要的目的是工作在持久层,就是数据操作层,即:之前DAO层;
如果说现在按照传统的开发方式要想实现以上的开发结构,那么请问最头疼的问题?——数据库之中的
SQL语法不同,函数(公共函数)也有不同。于是最痛苦的人是程序员,在当时的年代,常见的数据库:Infomix、sybase、
sqlserver、oracle、db2、mysql、pointdb。也就十多种数据库,那么对于程序员而言,最大的需要的就是根据不同的数据
库需要编写一个DAO接口的实现类,最典型的问题在于分页的支持上:
·Oracle数据库:ROWNUM;
·DB2数据库:ROWNUM;
·SQLServer数据库:TOP;
·MySQL数据库:LIMIT。
但是就因为这一点点的不同,程序的结构就要受到非常大的。
即:针对于Oracle需要有一个Oracle实现的数据层操作类,针对于MySQL有一个MySQL数据库的操作类,
那么当需要取得数据库操作实例的时候还需要通过工厂去区分不同的数据库。而且数据库连接上也要编写工厂。
这个时候如果中间不修改,写出来很容易,但是很难保证业务不会发生任何的变化,同时数据层也需要发生变化,
此时最想哭的还是程序员,同时改三组类。
清楚了最早的问题,实际上也提出了许多的解决方案;
1、利用EJB2.x技术的实体Bean(EntityBean)
此技术奠定了今天所有实体层技术的理论基础,可以说如果没有EJB的超前设计理念,那么就不会有今天大部分的
成熟框架,像Spring、Hibernate。但是EJB2.x技术在设计之初有了一个最严重问题,实体Bean是基于简单Java类扩展
的一门应用,在简单Java类之中一定存在有setter方法,那么在EJB之中就提出了,把每一条数据对应的简单java类缓存
到内存之中,每当用户调用setter方法,那么就要立刻进行数据库相应字段的更新,但是换回来的是,EJB严重占用服务
器资源,但是将所有数据都缓存起来所带来的系统开销太大了,使不起,而且EJB2.x还有一个最为严重的问题,没有分
页支持。
2、JDO(JavaDataObject,Java数据对象)
JDO可以说是最早实现的轻量级组件,它只了数据库抽象的基本支持。但是来讲JDO并没有在国内广泛的使用
开了,一直到最后的都没有见到过使用JDO开发的项目,但是JDO开创的是一个轻量级组件的先河。
3、Hibernate(真正流行起来的实体层框架,全自动化)
到了Hibernate的时候,在国内的发展已经是2005年了,而开始有这些技术的讨论,在2004年的时候就已经很丰富,
Hibernate实际上也是工作之中的一种总结,于是有人在工作之中就发现,每一次都在编写重复的CRUD,很烦躁。那么于
是就有人产生了一个想法,能不能把这些操作单独抽象的工具,留给用户去配置一些内容,而后其它的操作都按
照固定的方式进行,但是在Hibernate里面由于其产生的背景与实体Bean还是很相似的,其还是受到了实体Bean设
计的影响,所以导致部分操作的时候会发觉还是存在有实体Bean的身影,所以来讲性能是存在一些问题的;
4、MyBatis(半自动化)
MyBatis的前身是IBatis,后来在2009年的时候被收购了,于是推出了MyBatis,同时MyBatis要比IBatis
支持的功能,
原创力文档

文档评论(0)