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);