Hibernate

1. Hibernate是java中对象和关系的映射的解决方案,可以将数据库中的一条记录看做一个java对象,大大方便了编程,提高了可维护性。

2. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操作数据库,

hibernate可以应用在任何使用JDBC的场合,既可以在java的客户端程序使用,也可以在servlet/JSP的web应用中使用hibernate的对象关系映射,是非常强大并高性能的,其目标是使开发人员从95%的数据持久化工作中解脱出来

 

 

3. 映射定义

(1)对象和关系数据库之间的映射,通常是用一个xml文档来定义的

(2)映射语言是以java为中心,这意味着映射文档是按照持久化类的定义来创建的,而非表的定义

(3)业界流行的两种说法

      —对象驱动数据:根据对象建模,由对象模型来生成数据模型(数据库表结构)

      —数据驱动对象:根据数据建模,由数据模型来生成对象模型

 

4.什么是ORM

   在了解ORM之前,我们先来了解一下什么是持久化技术,持久化技术就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘),持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、xml数据文件中等等

 

1.持久化主要是和数据库打交道的层次,在数据库中对数据的增加、删除、查找和修改都是通过持久化来完成的

2.ORM(Object/Relational Mapping,对象/关系映射)是一种常用的持久化技术。我们所说的对象是指使用的编程语言是面向对象的,关系则是指使用的数据库是关系型数据库。ORM的映射关系如下图

 

 

 

 

使用ORM之后就不再需要与复杂的SQL语句打交道了,通过创建一个持久化类来映射数据库的一个数据库表,如下图,其中持久化的属性则映射到数据库表中的字段,当使用面向对象的方式来操作持久化对象时,ORM框架能自动将这些操作转化成SQL语句,从而完成对数据库的操作

 

5.使用ORM,使用它的好处究竟有哪些。

1、大大简化了代码

 

JDBC编程:代码量大  编写繁琐 容易出错

使用ORM:开发人员可以像操作对象一样来操作数据库,大大降低了代码量

 


 

2.将数据库底层透明化

 

JDBC编程:需了解数据库信息有哪些表,甚至有哪些字段,对程序员要求高

 

使用ORM:数据库透明化,开发人员只需要根据业务逻辑需求操作JAVA对象,不需要了解数据库信息

 

3、性能大大优化

JDBC编程     效率低 ;若在表中插入1000条数据要执行1000次sQL语句

 

使用ORM      自动向后台数据库发送sQL请求,

                          多次请求可以简化成一次操作,大大降低通信量

 

 

 


6.对象关系映射

对象关系映射(ORMapping),是软件开发过程中,在数据库层比较流行的设计思想。

在了解ORMapping之前,同样要明确一点,ORMapping是一种设计思想,不是一种编程技术

 

7.上面的SQL语句是在DAO中组织的,只能修改DAO的代码,重新编译部署。

我们可以发现SQL语句的结构是基本不变的,变化的只是表名、列名等,因此,解决该问题的办法是:将表名和列名在配置文件内注册,将表名对应到类,列名对应到类的属性,每当对表内的数据进行操作时,系统实际上从配置文件中读取表名和列名组织SQL语句,在DAO的开发人员看来是对对象进行操作,

 

如果数据库改变,只需改变配置文件,修改配置文件比修改源代码代价低得多,因此最直观的方法是将数据库中的一条记录看做一个对象,对这个对象的操作就直接影响到数据库内部。

 

8.

8.

 

9. 实际上,Student的作用和VO很类似,

在本章中,由于Student一般封装的是数据库中的持久化信息,因此也可以叫做PO(PersistenceObject),有些文献中,也叫POJO(Plain Ordinary Java Object,不含业务逻辑代码的普通Java对象)

 

10.在ORMapping中,一个PO对象,一般表示数据表中的一条记录,只是对这个记录的操作可以简化成对这个Bean对象的操作,操作之后数据库中的记录相应变化;框架必须提供一些能够对这些对象进行操作的函数

 

ORMapping思想给数据库层的操作带来了巨大的好处,但是,ORMapping毕竟只是一 种思想,不同的程序员编写出来的基于ORMapping思想的应用,风格可能不一样。影响程序的标准化。因此,有必要对ORMapping模式来进行标准化,让程序员在某个标准下进行 开发

 

11.ORMapping是Hibernate框架的基础,或者说,Hibernate是为了规范ORMapping开发而发布的一个框架。

类似的框架还有很多,如:iBATIS、Entity Bean等,而iBATIS框架并没有真正实现ORM框架,而EJB3是重量级开发框架,不适合轻量级开发。

 

12.hibernate框架是一个完整的持久层解决方案,通过hibernate的支持,可以使用面向对象方式进行各种数据库操作,从而取代传统的JDBC数据库操作。

 

13.hibernate的优势:

  hibernate是免费的、开放源代码的

  hibernate是轻量级开发,实现O/R映射简单

  hibernate可扩展强而且拥有众多的社区支持

 

14  

Hibernate中,常用的的组件有PO、框架API、Hibernate配置文件、Hibernate映射文件等,他们之间的关系如图

 

 

 

15  对于一个数据库操作,其执行步骤为:

(1)框架API通过读取Hibernate配置文件,连接到数据库

(2)当对PO进行操作时,框架API通过Hibernate映射文件,来决定操作的表名和列名

(3)框架API执行SQL语句

 

16  利用Hibernate编程,有以下几个步骤:

(1)编写Hibernate配置文件,连接到数据库

(2)编写PO

(3)编写Hibernate映射文件,将PO和表映射,PO中的属性和表中的列映射

(4)编写DAO,使用Hibernate进行数据库操作

 

17.开发hibernate程序的基本步骤

 

创建会话工厂类

在使用hibernate操作数据类型时,需要得到一个session对象,通过调用session对象的方法,才能完成数据库操作,如添加记录。删除记录等。这个HibernateSessionFactory.java也是由系统自动生成的

 

创建实体类

实体类用来映射数据库中的一张数据库表,实体类中的属性与数据库表中的字段相对应。持久化类是一个POJO类(简单的java对象),不用继承和实现任何类或接口

 

创建对象关系映射文件

关系映射文件用来映射持久化类和数据库表,从而将持久化类的属性和数据库表中的字段联系起来。

 

 

 

完成插入数据

如果需要使用hibernate来插入数据,需要调用session对象的save方法。sava方法接受一个Object类型的参数,该参数为一个封装了所有插入数据的对象

 

 

 

 

18 Hibernate框架的基本使用方法

1.开始编写这个项目,用myeclipse新建一个普通的java项目:Prj13

 

2.导入Hibernate框架

 

选中的项目,在MyEclipse菜单栏中找到:MyEclipse——Project Capabilities——Add Hibernate Capabilities

 

 

3.编写Hibernate配置文件

Hibernate配置文件名为:hibernate.cfg.xml,一般不要修改名称,并放在src目录下,该文件的主要目的是为了连接到数据库

 

打开hibernate.cfg.xml源代码,将代码改为

 

4.编写PO

前面所做的内容只是把数据库连接的基本消息写在配置文件里,

接下来要把T_STUDENT和一个对应起来。

 

具体操作为:建立一个名为po的包,在po包里新建一个类,用来对应数据库T_STUDENT表中的记录

 

 

 

5.编写并配置映射文件

 

编写完这个类之后,系统还是无法识别Student数据库表的关系。因此,要编写第2个配置文件,配置文件可以随意命名,但此处将其命名为Student.hbm.xml,这样让开发者一看就知道这是Hibernate的映射文件,此文件一般和po放在一个包下

 

 

主要编写格式为:

(1)  <class  name=“类名”table=“表名”>:类和表对应,类名就是之前创建的Student类;表名就是Student类所对应的T_STUDENT

(2) Id

—在数据库中通过主键唯一标识一条记录

—通过ORM将数据库中的一条记录映射为一个java对象

—被映射的类必须定义对应数据库表主键字段

—大多数类有一个javabean风格的属性,为每一个实例包含唯一的标识

—<id>元素定义了该属性到数据库表主键字段的映射

<id name="属性" column="列名">:填写主键,即使表内没有主键,配置文件中也要配置一个唯一标识。这里分别填写Student类里的account和T_STUDENT表中的ACCOUNT属性

 

(3) <generator class="assigned"/>:主键的生成策略,assigned表示由用户赋值。其他生成策略,后面会进行详细的介绍

(4)<property name=“属性”column=“列名”/>。将属性和列对应起来

 

 

 

6.配置到这里,系统无法识这个映射文件,还需将此文件路径在 hibernate.cfg.xml文件中注册,使得系统能正确识别此文件。

操作方法为:打开hibernate.cfg.xml,

将“<mapping resource=”po/Student.hbm.xml“/>”加到hibernate.cfg.xml中

 

 


JavaEE 彭遨员 文章被收录于专栏

2015 javaEE 彭傲员 郭克华 中南大学

全部评论

相关推荐

03-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务