一 概述

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

二 入门

1.下载Hibernate的开发环境

Hibernate3.x Hibernate4.x Hibernate5.x
https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

2. 解压Hibernate

01 Hibernate入门 - 图1
documentation :Hibernate开发的文档
lib :Hibernate开发包
required :Hibernate开发的必须的依赖包
optional :Hibernate开发的可选的jar包
project :Hibernate提供的项目

3.导入jar包

数据库驱动包
Hibernate开发的必须的jar包
Hibernate引入日志记录包
01 Hibernate入门 - 图2

4.创建表

CREATE TABLE cst_customer (
cust_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT ‘客户编号(主键)’,
cust_name varchar(32) NOT NULL COMMENT ‘客户名称(公司名称)’,
cust_source varchar(32) DEFAULT NULL COMMENT ‘客户信息来源’,
cust_industry varchar(32) DEFAULT NULL COMMENT ‘客户所属行业’,
cust_level varchar(32) DEFAULT NULL COMMENT ‘客户级别’,
cust_phone varchar(64) DEFAULT NULL COMMENT ‘固定电话’,
cust_mobile varchar(16) DEFAULT NULL COMMENT ‘移动电话’,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

5.创建实体类

01 Hibernate入门 - 图3

6.创建映射文件

映射需要通过XML的配置文件来完成,这个配置文件在实体类包下创建,可以任意命名。
尽量统一命名规范(类名.hbm.xml)
01 Hibernate入门 - 图4

7.创建Hibernate的核心配置文件

在src下创建,Hibernate的核心配置文件的名称:hibernate.cfg.xml
01 Hibernate入门 - 图5

8.编写代码

01 Hibernate入门 - 图6

三 常见配置

1.Hibernate的映射配置

  1. 原来为 table,需要自己转换一下
  2. {"cells":[{"value":"class标签","inlineStyles":{"color":[{"from":0,"to":7,"value":"#df402a"}]}},{"value":"作用:用来建立类与表的映射关系","inlineStyles":{"color":[{"from":0,"to":15,"value":"#df402a"}]}},{"mergeHeight":1,"mergeWidth":2,"textAlign":"center","value":"属性"},{"mergePointDX":1,"mergePointDY":0,"value":""},{"textAlign":"center","value":"name"},{"textAlign":"center","value":"类的全路径"},{"textAlign":"center","value":"table"},{"textAlign":"center","value":"表名(类名与表名一致,table可以省略)","inlineStyles":{"font-family":[{"from":3,"to":11,"value":"SimSun"},{"from":16,"to":20,"value":"SimSun"}]}},{"textAlign":"center","value":"catalog"},{"textAlign":"center","value":"数据库名"}],"heights":[40,40,40,40,40],"widths":[116,421]}
  1. 原来为 table,需要自己转换一下
  2. {"cells":[{"value":"id标签","inlineStyles":{"color":[{"from":0,"to":4,"value":"#df402a"}]}},{"value":"用来建立类中的属性与表中的主键的对应关系","inlineStyles":{"font-family":[{"from":0,"to":20,"value":"SimSun"}],"color":[{"from":0,"to":20,"value":"#df402a"}]}},{"mergeHeight":1,"mergeWidth":2,"textAlign":"center","value":"属性"},{"mergePointDX":1,"mergePointDY":0,"value":""},{"textAlign":"center","value":"name"},{"textAlign":"center","value":"类中的属性名"},{"textAlign":"center","value":"column"},{"textAlign":"center","value":"表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)"},{"textAlign":"center","value":"length"},{"textAlign":"center","value":"长度"},{"textAlign":"center","value":"type"},{"textAlign":"center","value":"类型"}],"heights":[40,40,40,40,40,40],"widths":[116,481]}
  1. 原来为 table,需要自己转换一下
  2. {"cells":[{"value":"property","inlineStyles":{"color":[{"from":0,"to":8,"value":"#df402a"}]}},{"value":"用来建立类中的普通属性与表的字段的对应关系","inlineStyles":{"font-family":[{"from":0,"to":21,"value":"SimSun"}],"color":[{"from":0,"to":21,"value":"#df402a"}]}},{"mergeHeight":1,"mergeWidth":2,"textAlign":"center","value":"属性"},{"mergePointDX":1,"mergePointDY":0,"value":""},{"textAlign":"center","value":"name"},{"textAlign":"center","value":"类中的属性名"},{"textAlign":"center","value":"column"},{"textAlign":"center","value":"表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)"},{"textAlign":"center","value":"length"},{"textAlign":"center","value":"长度"},{"textAlign":"center","value":"type"},{"textAlign":"center","value":"类型"},{"textAlign":"center","value":"not-null"},{"textAlign":"center","value":"设置非空"},{"textAlign":"center","value":"unique"},{"textAlign":"center","value":"设置唯一"}],"heights":[40,40,40,40,40,40,40,40],"widths":[116,481]}

2.核心配置文件

1)必须的配置

2)可选的配置

3)映射文件的引入

引入映射文件的位置
01 Hibernate入门 - 图7

四 核心API

1.Configuration:Hibernate的配置对象

01 Hibernate入门 - 图8
作用:
加载核心配置文件
hibernate.properties
Configuration cfg = new Configuration();
hibernate.cfg.xml
Configuration cfg = new Configuration().configure();
加载映射文件
// 手动加载映射
configuration.addResource(“com/itheima/hibernate/demo1/Customer.hbm.xml”);
工具类:
01 Hibernate入门 - 图9

2.SessionFactory:Session工厂

01 Hibernate入门 - 图10
SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存(不讲)。是线程安全的对象。一个项目创建一个对象即可。

  1. Session:类似Connection对象是连接对象

01 Hibernate入门 - 图11
Session代表的是Hibernate与数据库的链接对象。不是线程安全的。与数据库交互桥梁。
l Session中的API
n 保存方法:
u Serializable save(Object obj);
n 查询方法:
u T get(Class c,Serializable id);
u T load(Class c,Serializable id);
get方法和load方法的区别?
01 Hibernate入门 - 图12
修改:
01 Hibernate入门 - 图13
刪除
01 Hibernate入门 - 图14
保存或更新(不常用,了解)
01 Hibernate入门 - 图15
对象查询:
01 Hibernate入门 - 图16