
言和关系数据库之间的桥梁,所以Hibernate 允许程序开发者采用面向对象的方式
来 *** 作关系数据库。 补充: Hibernate 概述
Hibernate 是目前最流行的ORM 框架,其采用非常优雅的方式将SQL *** 作完全包装
成对象化的 *** 作。其作者Gavin King 在持久层设计上极富经验,采用非常少的代码实现
了整个框架,同时完全开放源代码,即使偶尔遇到无法理解的情况,也可以参照源代码
来理解其在持久层上灵巧而智能的设计。
目前Hibernate 在国内的开发人员相当多, Hibernate 的文档也非常丰富,这些都为
学习Hiberante 铺平了道路,因而Hibernate 的学习相对简单一些。下面通过对比来了解
Hibernate 和传统JDBC *** 作数据库持久层之间的差异。
Hibernate 的起源
当前的软件开发语言已经全面转向面向对象,而数据库系统仍停留在关系数据库阶
段。面对复杂的企业环境,同时使用面向对象语言和关系数据库是相当麻烦的,不但中
间的过渡难以理解,而且其开发周期也相当长。
Hibernate 是一个面向Java 环境的对象/关系数据库映射工具。对象/关系数据库映射194久化E( Object/Relational Mapping) 表示一种技术,用来把对象模型表示的对象映射到基于SQL
的关系模型数据结构中去。
Hibernate 的目标是:释放开发者通常的数据持久化相关的编程任务的95% 。对于以
数据为中心的程序而言,往往在数据库中使用存储过程来实现商业逻辑,Hibernate 可能
不是最好的解决方案。但对于那些基于Java 的中间件应用中,设计采用面向对象的业务
据库厂商的SQL 代码,并且把结果集由表格式的形式转换成值对象的形式。
Hibernate 不仅管理Java 类到数据库表的映射(包括Java 数据类型到SQL 数据类型
的映射) ,还提供数据查询和获取数据的方法,可以大幅度地减少在开发时人工使用SQL
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD *** 作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要 *** 作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的 *** 作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
应用程序的分层体系结构
随着计算机应用软件的发展 应用程序逐渐由单层体系结构发展为多层体系结构 其中 三层结构是目前典型的一种应用软件结构 如图 左
表述层 提供与用户交互的界面 如GUI(图形用户界面) web页面等
业务逻辑层 负责各种业务逻辑 直接访问数据库 提供对业务数据的保存 更新 删除和查询 *** 作
数据库层 负责存放管理应用的持久性业务数据
三层结构的特点是 所有下层向上层提供调用的接口 具体实现细节对上层透明 层与层之间存在自上而下的依赖关系 即上层会访问下层的API 但下层不依赖于上层
持久化层(如图 右)
( )什么叫持久化?
在图 右中 分离出的持久化层封装了数据访问细节 为业务逻辑层提供了面向对象的API
持久(Persistence) 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘) 持久化的主要应用是将内存中的数据存储在关系型的数据库中 当然也可以存储在磁盘文件中 XML数据文件中等等
( )什么叫持久层?
持久层(Persistence Layer) 即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面 将数据使用者和数据实体相关联
( )为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的 *** 作 当大量用户同时直接访问数据库的时候 效率将非常低 如果将数据持久化就不需要每次从数据库读取数据 直接在内存中对数据进行 *** 作 这样就节约了数据库资源 而且加快了系统的反映速度
增加持久化层提高了开发的效率 使软件的体系结构更加清晰 在代码编写和系统维护方面变得更容易 特别是在大型的应用里边 会更有利 同时 持久化层作为单独的一层 人们可以为这一层独立的开发一个软件包 让其实现将各种应用数据的持久化 并为上层提供服务 从而使得各个企业里做应用开发的开发人员 不必再来做数据持久化的底层实现工作 而是可以直接调用持久化层提供的API
( )目前在持久化层领域 实现模式有以下几种
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式
D JDO模式
E CMP模式
ORM介绍
ORM(Object Relational Mapping) 即对象关系映射
指以O/R原理设计的持久化框架(Framework) 包括 O/R机制 SQL自生成 事务处理和Cache管理等
ORM的实现思想就是将关系数据库中表的数据映射成为对象 以对象的形式展现 这样开发人员就可以把对数据库的 *** 作转化为对这些对象的 *** 作 因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的 *** 作
常用的ORM中间件有
Apache OJB ()
Cayenne ()
Jaxor ()
Hibernate ()
iBatis ()
jRelationalFramework ()
mirage ()
SMYLE ()
TopLink ()
其中 Hibernate 的轻量级 ORM 模型逐步确立了在 Java ORM 架构中领导地位 甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 Java ORM 工业标准 而且其中的许多设计均被 J EE 标准组织吸纳而成为最新 EJB 规范的标准
二 Hibernate定义
Hibernate是一种Java语言下的对象关系映射解决方案 它是一种自由 开源的软件 它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去 为面向对象的领域模型到传统的关系型数据库的映射 提供了一个使用方便的框架
三 Hibernate的作用
Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射) 还提供数据查询和获取数据的方法 可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间
它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来 无论是从设计草案还是从一个遗留数据库开始 开发人员都可以采用Hibernate
四 Hibernate的应用
Hibernate对JDBC进行了非常轻量级的对象封装 使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库 Hibernate可以应用在任何使用JDBC的场合 它既可以在Java的客户端程序使用 也可以在Servlet/JSP的Web应用中使用 最具革命意义的是 Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J EE架构中取代CMP 完成数据持久化的重任
五 Hibernate API简介
Hibernate API中的接口可以分为以下几类
( ) 提供访问数据库的 *** 作的接口 包括session Transaction Query接口
( ) 用于配置Hibernate的接口 Configuration
( ) 间接接口 使应用程序接受Hibernate内部发生的事件 并作出相关的回应 包括 Interceptor Lifecycle Validatable
( ) 用于扩展Hibernate功能的接口 如UserType CompositeUserType IdentifierGenerator接口
Hibernate内部还封装了JDBC JTA(Java Transaction API)和JNDI(Java Naming And Directory Interface) 其中 JDBC提供底层的数据访问 *** 作 只要用户提供了相应的JDBC驱动程序 Hibernate可以访问任何一个数据库系统 JTA和JNDI使Hibernate能够和J EE应用服务器集成
Hibernate的核心接口框图
六 Hibernate的优缺点
( )优点
a Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性 b Hibernate 的性能非常好 因为它是个轻量级框架 映射的灵活性很出色 c 它支持各种关系数据库 从一对一到多对多的各种复杂关系
( )缺点
lishixinzhi/Article/program/Java/ky/201311/28756
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)