Hibernate框架简介

  • 格式:pdf
  • 大小:147.26 KB
  • 文档页数:3

Hibernate框架简介

⼀、什么是 Hibernate?

Hibernate 是⼀个基于元数据的轻量级的 ORM 框架:

1、元数据(Meta Data):data about data(数据的数据),也就是说描述⼀个对象数据,相当于这个对象的上下⽂环境。

2、轻量级:占⽤资源少,没有侵⼊性。(其实我认为这只是相对⽽⾔,如果和 Ibatis 相⽐,它到成重量级的了)。

3、ORM:(Object Relation Mapping)对象关系数据库的映射这是 Hibernate 框架的重点,也就是说将我们程序中的实体(bean,这⾥

也叫 POJO)和数据库中的表进⾏映射。java 类型和 sql类型映射,⾯向对象设计和关系型数据库设计的映射,从⽽我们只需要将更多的精

⼒放到业务中,⽽不是 sql 数据库⽅⾯。

4、POJO:(Plain Ordinary Java Object),⽆格式的普通 java 对象,也就是上边说的实体,和数据库做映射的简单类。只是在这⾥提出了

⼀个新的名词⽽已。

总⽽⾔之,Hibernate 就是将我们的数据库表和程序的 POJO 类进⾏映射,数据的操作进⾏了封装,使我们不⽤把数据库弄得⾮常精通,我

们会⾯向对象编程就可以了,这样⼤⼤提⾼了我们的编程效率,⽽且对个⼈的知识要求也降低了。

⼆、Hibernate 基础 ----- 数据库操作

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

1、操作 JDBC 阶段:

本阶段即在调⽤ JDBC 连接数据库的包时,需要⾃⼰进⾏编写的进⾏数据库⽤户登录验证的那段代码。在这段代码中可以执⾏ SQL 语句进

⾏数据查询、插⼊、删除等。

2、封装 JDBC 阶段:

由于仅仅只是操作 JDBC,使得在实现不同逻辑功能时,都要重新编写进⾏数据库⽤户登陆验证的那段代码,使得代码重复很严重。为此,

引⼊了 JavaBean的技术,书写⼀个 DBAccess.java 类进⾏数据库⽤户登陆验证和数据库操作,并把其中进⾏数据库操作部分封装成不同的

函数,那么实现后续的逻辑功能时只需调⽤这些函数即可实现。

3、ORM 阶段:

在对 JDBC 进⾏封装之后,能够⽅便的实现数据库的操作。但是,在⾯向对象的编程开发中,数据库的操作与普通的⾯向对象的 Java 代

码,显然是两种不同的开发思路。于是就产⽣了 ORM 阶段——使原来直接操作数据库变成了直接操作普通的 Java 类来实现相应的数据库

操作。

三、Hibernate 理论基础 是ORM 对象关系映射

ORM 是 Object Relational Mapping 的简称,即对象关系映射。它是⼀种为了解决⾯向对象与关系数据库存在的互不匹配技术。简单地

说,ORM 是通过使⽤描述对象和数据库之间映射的元数据,将 Java 程序中的对象持久化到关系数据库中。下⾯请看⼀个⽤户实体(建⽴数

据表时,要描述的现实世界中的实现)、数据表(实体建⽴完后,抽象分析完成数据表建⽴)、Java 类(此处就是 ORM要完成的任务⽽抽

象⽣成的 Java 类):

ORM 实现了数据表到 Java 对象的映射,这正是 ORM 的作⽤

四、持久层概念

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

(1)持久化:就是对数据和程序状态的保持。⼤多数情况下特别是企业级应⽤,数据持久化往往也就意味将内存中的数据保存到磁盘上加

以固化,⽽持久化的实现过程则⼤多通过各种关系数据库来完成。

(2)持久层:把数据库实现当做⼀个独⽴逻辑拿出来,即数据库程序是在内存中的,为了使程序运⾏结束后状态得以保存,就要保存到数

据库。持久层是在系统逻辑层⾯上,专致于实现数据持久化的⼀个相对独⽴的领域。持久层的⽬的是通过持久层的框架将数据库存储服务从

服务层中分离出来,⽽ Hibernate 是⽬前最流⾏的持久层框架。

五、具体开发步骤:

1、在Eclipse中配置开发环境:

(1)安装Hibernate插件:

A、下载Hibernate插件,采⽤link⽅式安装

(2)添加XML约束⽂件

2、新建Maven⼯程,导⼊Hibernate的核⼼jar包、⽀持C3P0数据库连接池的jar包:

c3p0-0.9.5.2.jar

hibernate-c3p0-5.2.17.Final.jar

org.hibernate

hibernate-core

5.2.17.Final

org.hibernate

hibernate-c3p0

5.2.17.Final

com.mchange

c3p0

0.9.5.2

2、创建Hibernate配置⽂件:

org.hibernate.connection.C3P0ConnectionProvider

20

5

120

org.hibernate.dialect.Oracle10gDialect

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@localhost:1521:orcl

scott

root

true

true

update

2、创建持久化类:

public class Product {

private Integer p_id;

private String p_name;

private Double p_price;

private String p_phone;

private String p_address;

......//省去set/get⽅法

}

3、创建对象-关系映射⽂件:

TB_PRODUCT_SEQ

4、在Hibernate配置⽂件中加⼊映射⽂件:

5、通过Hibernate API 编写访问数据库的代码:

//1.创建Configuration对象,并调⽤configure()⽅法从默认路径加载hibernate.cfg.xml⽂件

Configuration config = new Configuration().configure();

//2.获取SessionFactory类实例(相当于JDBC中的⼯⼚类)

SessionFactory sessionFactory = config.buildSessionFactory();

//3.获取Session实例(相当于JDBC中的Connection对象)

Session session = sessionFactory.openSession();

//4.开启事务

Transaction ts = session.beginTransaction();

//5.封装数据

Product pro = new Product();

pro.setP_name("钢笔");

pro.setP_price(12.55);

pro.setP_phone("02985368888");

pro.setP_address("咸阳");

//6.执⾏保存操作

session.save(pro);

//7.提交事务

ts.commit();

session.close();

注意:

1)4.0以前的版本使⽤,现在已经废弃;

sessionFactory = configuration.buildSessionFactory();

2)创建⼀个ServiceRegistry对象:hibernate4.x以后新添加的对象,hibernate的任何配置对象和服务都必须在该对象中注册了才能使⽤

//Hibernate4.2之前版本的写法:

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); //Hibernate4.3之后版本的写法:

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); sessionFactory = configuration.buildSessionFactory(serviceRegistry);