框架基础之Hibernate简介

1、什么是Hibernate?

Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet或JSP的Web应用中。

总之,可以简单的理解为Hibernate是基于JDBC技术基础上衍生而来,并在此基础上使得由原来直接操纵数据库变成直接操作映射数据表后生成的Java类,从而实现对象编程思维来操纵数据库。

2、Hibernate理论基础概要

Hibernate是一个JDO(Java Data Object,Java对象持久化)工具。它的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样我们就只需要操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必像传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的 编码工作节省了大量的劳动。Hibernate提供的HQL是一个类SQL语言,它和EJBQL(HQL的一个子集)一样都提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL。

Hibernate的作用是介于Java与JDBC之间的一个持久层,它通过建立与数据库表之间的映射来操纵数据库。Hibernate是基于JDBC基础之上的,在深入了解Hibernate理论技术的基础上,要先了解以下三点基础:数据库操作的三个阶段、ORM对象关系映射、持久层概念。

3、Hibernate理论基础之数据库操作

在Hibernate出现之前,对数据库操作是基于JDBC,这中间经历了操作JDBC、封装JDBC、ORM三个阶段。

(1)操作JDBC阶段

本阶段即在调用JDBC连接数据库的包时,需要自己进行编写的进行数据库用户登录验证的那段代码。在这段代码中可以执行SQL语句进行数据查询、插入、删除等。

(2) 封装JDBC阶段

由于仅仅只是操作JDBC,使得在实现不同逻辑功能时,都要重新编写进行数据库用户登陆验证的那段代码,使得代码重复很严重。为此,引入了JavaBean的技术,书写一个DBAccess.java类进行数据库用户登陆验证和数据库操作,并把其中进行数据库操作部分封装成不同的函数,那么实现后续的逻辑功能时只需调用这些函数即可实现。

(3)ORM阶段

在对JDBC进行封装之后,能够方便的实现数据库的操作。但是,在面向对象的编程开发中,数据库的操作与普通的面向对象的Java代码,显然是两种不同的开发思路。于是就产生了ORM阶段——使原来直接操作数据库变成了直接操作普通的Java类来实现相应的数据库操作。

 

4、Hibernate理论基础之ORM对象关系映射

ORM是Object Relational Mapping的简称,即对象关系映射。它是一种为了解决面向对象与关系数据库存在的互不匹配技术。简单地说,ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象持久化到关系数据库中。下面请看一个用户实体(建立数据表时,要描述的现实世界中的实现)、数据表(实体建立完后,抽象分析完成数据表建立)、Java类(此处就是ORM要完成的任务而抽象生成的Java类):

图一:ORM示意图(PS:此处ER图和数据表user表画的不规范,仅仅作为示意作用哦)

有上图可知,ORM实现了数据表到Java对象的映射,这正是ORM的作用。

 

5、Hibernate理论基础之持久层概念

ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中。由此便引入了以下两个新概念:

(1)持久化:就是对数据和程序状态的保持。大多数情况下特别是企业级应用,数据持久化往往也就意味将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。

(2)持久层:把数据库实现当做一个独立逻辑拿出来,即数据库程序是在内存中的,为了使程序运行结束后状态得以保存,就要保存到数据库。持久层是在系统逻辑层面上,专致于实现数据持久化的一个相对独立的领域。

持久层的目的是通过持久层的框架将数据库存储服务从服务层中分离出来,而Hibernate是目前最流行的持久层框架。

  

6、Hibernate上机操作简单实例

首先,简要说一下Hibernate的开发流程,主要分为以下五步:

(1)创建Hibernate的配置文件:该文件负责初始化Hibernate配置,包括数据库配置和映射文件的配置;

(2)创建Hibernate的映射文件:每一个数据表对应一个映射文件,该文件描述了数据库中表的信息,也描述了对应的持久化类的信息;

(3)创建持久化类:每一个类对应于数据库表,通过映射文件进行关联;

(4)面向Web应用层, 编写DAO层:通过HibernateAPI编写访问数据库的代码;

(5)面向Web应用层,编写Service层: 编写业务层实现,调用DAO层类代码。

具体关系流程如下图二所示:

图二:Hibernate开发流程图

 

最后,最为核心的也就是Hibernate上机操作简单实例操作步骤:

在此推荐一篇博客,讲解超详细哦:http://www.cnblogs.com/xwdreamer/archive/2010/09/23/2297087.html

(PS:另外附一个在MyEclipse中实现自动生成Hibernate映射文件和实体类的教程:http://jingyan.baidu.com/article/456c463b99f4370a583144a8.html

框架基础之Hibernate简介的更多相关文章

  1. Mybatis框架基础入门(一)--简介及优势

    一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...

  2. tornado框架基础01-路由简介

    tornado 小而精 Django 大而全 Web框架 Tornado是一个由Python开发的Web框架 Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务 非阻塞 Tornad ...

  3. (转)Hibernate框架基础——在Hibernate中java对象的状态

    http://blog.csdn.net/yerenyuan_pku/article/details/52760627 在Hibernate中java对象的状态 Hibernate把对象分为4种状态: ...

  4. Hibernatel框架基础使用

    Hibernatel框架基础使用 1.简介 1.1.Hibernate框架由来 Struts:基于MVC模式的应用层框架技术 Hibernate:基于持久层的框架(数据访问层使用)! Spring:创 ...

  5. Hibernate框架基础

    Hibernate框架基础 Hibernate框架 ORM概念 O, Object 对象 R, Realtion 关系 (关系型数据库: MySQL, Oracle…) M,Mapping 映射 OR ...

  6. (转)Hibernate框架基础——一对多关联关系映射

    http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即 ...

  7. 1.Hibernate简介

    1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发;           b.大大减少代码量;           c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...

  8. Struts2框架基础

    Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...

  9. hibernate学习一(hibernate简介与准备)

    一.hibernate简介 Hibernate是一个开放源代码的对象-关系映射(Object/Relational Mapping 即 ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJ ...

随机推荐

  1. js+html5双人五子棋(源码下载)

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  2. ios 文件操作(NSFileManager)

    IOS的沙盒机制,应用只能访问自己应用目录下的文件,iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容. iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内. ...

  3. 通过HttpListener实现简单的Http服务

    使用HttpListener实现简单的Http服务 HttpListener提供一个简单的.可通过编程方式控制的 HTTP 协议侦听器.使用它可以很容易的提供一些Http服务,而无需启动IIS这类大型 ...

  4. Spring(二)__bean的装配

    Bean的装配: 在spring容器内拼凑bean叫做装配.装 配bean的时候,需要告诉容器哪些bean 以及容器如何使用依赖注入将它们配合在一起. 上下文定义文件的根元素是<beans> ...

  5. jQuery Datepicker日期控件

    datepicker可以为bootstrap添加一个事件选择控件,适用于任何需要调用的场合,支持多种事件格式输出(比如:dd, d, mm, m, yyyy, yy等),是制作网页不可缺失的插件. R ...

  6. JS高程3.基本概念(6)函数

    1.ECMAScript中的函数使用function关键字来声明. eg: function sum (num1,num2){ alert(num1+num2); } sum(3,7); 注意: 在有 ...

  7. 熟悉vs2012IDE

    使用vs2012已经几个月了,深感对开发环境的学习有助于提高开发的效率.现将我的经验总结如下: 一.搜索 vs2012相比vs2010添加了正则搜索,极大的提高了代码的查询效率. 二.重构 同vs20 ...

  8. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  9. 【转】swift实现ios类似微信输入框跟随键盘弹出的效果

    swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...

  10. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...