Hibernate簡介
- Hibernate是一個開放源代碼的對象關系映射框架(ORM),它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關系,是一個全自動的orm框架。
- hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫
總結: Hibernate使程序員通過操作對象的方式來操作數(shù)據(jù)庫表記錄
了解
ORM對象關系映射(Object Relational Mapping):用來把對象模型表示的對象映射到基于S Q L 的關系模型數(shù)據(jù)庫結構中去。
優(yōu)點
- Hibernate對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復性代碼
- Hibernate是一個基于jdbc的主流持久化框架,是一個優(yōu)秀的orm實現(xiàn),它很大程度的簡化了dao層編碼工作
- Hibernate的性能非常好,因為它是一個輕量級框架。映射的靈活性很出色。它支持很多關系型數(shù)據(jù)庫,從一對一到多對多的各種復雜關系
簡單使用
-
第一步:下載Hibernate5的運行環(huán)境
下載相應的jar包等 - 第二步:創(chuàng)建表結構
建表語句如下:
Create database hibernate_day01;
Use hibernate_day01;
CREATE TABLE `cst_customer` (
`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客戶編號(主鍵)',
`cust_name` varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
`cust_user_id` bigint(32) DEFAULT NULL COMMENT '負責人id',
`cust_create_id` bigint(32) DEFAULT NULL COMMENT '創(chuàng)建人id',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客戶信息來源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客戶所屬行業(yè)',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客戶級別',
`cust_linkman` varchar(64) DEFAULT NULL COMMENT '聯(lián)系人',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定電話',
`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移動電話',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
- 第三步:搭建Hibernate的開發(fā)環(huán)境
創(chuàng)建WEB工程,引入Hibernate開發(fā)所需要的jar包
* MySQL的驅動jar包 (eg:mysql-connector-java-5.1.7-bin.jar)
* Hibernate開發(fā)需要的jar包(eg:hibernate-release-5.0.7.Final/lib/required/所有jar包)
* 日志jar包(eg:log4j/所有jar包)
- 第四步:編寫JavaBean實體類
public class Customer {
private Long cust_id;
private String cust_name;
private Long cust_user_id;
private Long cust_create_id;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_linkman;
private String cust_phone;
private String cust_mobile;
// 省略get和set方法
}
- 第五步:創(chuàng)建類與表結構的映射
1. 在src目錄下,創(chuàng)建名稱為hibernate.cfg.xml的配置文件
2. 在XML中引入DTD約束
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
3. 打開:hibernate-release-5.0.7.Final/project/etc/hibernate.properties,可以查看具體的配置信息
* 必須配置的4大參數(shù)
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password
* 數(shù)據(jù)庫的方言(必須配置的)
#hibernate.dialect org.hibernate.dialect.MySQLDialect
* 可選的配置
#hibernate.show_sql true
#hibernate.format_sql true
#hibernate.hbm2ddl.auto update
* 引入映射配置文件(一定要注意,要引入映射文件,框架需要加載映射文件)
* <mapping resource="com/itheima/domain/Customer.hbm.xml"/>
4. 具體的配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="com/itheima/domain/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
- 第七步:編寫Hibernate入門代碼
1. 具體的代碼如下
/**
* 測試保存客戶
*/
@Test
public void testSave(){
// 先加載配置文件
Configuration config = new Configuration();
// 默認加載src目錄下的配置文件
config.configure();
// 創(chuàng)建SessionFactory對象
SessionFactory factory = config.buildSessionFactory();
// 創(chuàng)建session對象
Session session = factory.openSession();
// 開啟事務
Transaction tr = session.beginTransaction();
// 編寫保存代碼
Customer c = new Customer();
// c.setCust_id(cust_id); 已經(jīng)自動遞增
c.setCust_name("測試名稱");
c.setCust_mobile("110");
// 保存客戶
session.save(c);
// 提交事務
tr.commit();
// 釋放資源
session.close();
factory.close();
}