hibernate快速入门
Hibernate简介
Hibernate是一个开放源代码的ORM(Object Relational Mapping 对象关系映射)框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。
所谓的ORM就是利用描述对象和数据库之间映射的元数据,自动把java应用程序中的对象,持久化到关系型数据库的表中。通过操作java对象就可以完成对数据库表的操作。
hibernate核心接口
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询
为什么使用Hibernate框架
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
总结:Hibernate是企业级开发中的主流框架,映射的灵活性很出色。它支持很多关系型数据库。
Hibernate学习内容:
由于之前学过Hiberate框架,所以这就等于是在复习了。对于Hiberate框架的学习重点,可以总结为:
- 掌握Hiberate的基本配置——即搭建Hiberate开发环境
- 掌握Hiberate常用API——即如何使用Hiberate框架进行开发
- 掌握Hiberate的关联映射——解决表与表之间存在的关系问题,有1:n(一对多)、 1:1(一对一)、m:n(多对多)关系
- 掌握Hiberate的检索方式——即掌握Hiberate的查询
- 掌握Hiberate的优化方式——即提高Hiberate的效率
1)搭建好环境
引入hibernate最小的jar包
准备Hibernate.cfg.xml启动配置文件
2)写实体类(pojo)
3)为实体类写映射文件"User.hbm.xml" 在hibernate.cfg.xml添加映射的实体 4)创建库表
5)写测试类
获得Configuration
创建SessionFactory
打开Session
开启事务
使用session操作数据
提交事务
关闭资源
下载Hibernate5
所以,之后有关Hibernate的系列文章都是以这个版本为蓝图展开的。下载解压缩之后,可以看到如下目录结构:
Hibernate的相关配置文件
准备好以上工作之后,我们终于要踏入Hibernate的学习中了。首先我们要编写Hibernate的相关配置文件,Hibernate的相关配置文件分为两种:
-
xxx.hbm.xml
:它主要是用于描述类与数据库中的表的映射关系。 -
hibernate.cfg.xml
:它是Hibernate框架的核心配置文件。
有关这两个配置文件的详细介绍,我们后面会给大家讲解,如果就在这里弄的话,违背了我的初衷了,本文只是在教初学者怎样快速入门Hibernate。
映射配置文件
首先我们要学会如何编写映射配置文件,大家要知道编写完的映射配置文件应与实体类在同一个包下,并且名称应是类名.hbm.xml
,所以我们要在cn.itheima.domain包下创建一个Customer.hbm.xml文件,但是它的约束应该怎么写呢?可以在Hibernate的核心jar包——hibernate-core-5.0.7.Final.jar的org.hibernate包下查找到hibernate-mapping-3.0.dtd文件,打开该文件,找到如下内容:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- 1
- 2
- 3
然后复制黏贴到Customer.hbm.xml文件中。
hibernate执行原理
- 通过
Configuration().configure();
读取并解析hibernate.cfg.xml配置文件。 - 由hibernate.cfg.xml中的
<mapping resource="com/xx/Xxx.hbm.xml"/>
读取解析映射信息。 - 通过
config.buildSessionFactory();
得到sessionFactory。 -
sessionFactory.openSession();
得到session。 -
session.beginTransaction();
开启事务。 -
persistent operate;
执行你自己的操作。 -
session.getTransaction().commit();
提交事务。 - 关闭session。
- 关闭sessionFactory。