Hibernate入門基礎
**Hibernate框架的概述**
1. Hibernate框架的概述* Hibernate是一個開放原始碼的物件關係對映(ORM)框架,它對JDBC進行了非常輕量級的物件封裝,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。
* Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程式使用,也可以在Servlet/JSP的Web應用中使用。
* Hibernate是輕量級JavaEE應用的持久層解決方案,是一個關係資料庫ORM框架
2. Hibernate是一個持久層的ORM框架!
**什麼是ORM(物件關係對映)**
1. ORM對映:Object Relational Mapping
* O:面向物件領域的Object(JavaBean物件)
* R:關係資料庫領域的Relational(表的結構)
* M:對映Mapping(XML的配置檔案)
2. 簡單一句話:Hibernate使程式設計師通過操作物件的方式來操作資料庫表記錄
**Hibernate優點**
1. 優點
* Hibernate對JDBC訪問資料庫的程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼
* Hibernate是一個基於jdbc的主流持久化框架,是一個優秀的orm實現,它很大程度的簡化了dao層編碼工作
* Hibernate的效能非常好,因為它是一個輕量級框架。對映的靈活性很出色。它支援很多關係型資料庫,從一對一到多對多的各種複雜關係
Hibernate框架的快速入門
這裡拿我寫的一個客戶關係管理系統作為例子
**第一步:下載Hibernate5的執行環境**
1. 下載相應的jar包等
http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/hibernate-release-5.0.7.Final.zip/download
2. 解壓後對目錄結構可以自己去了解,這裡不再贅述
**第二步:建立表結構**
1. 建表語句如下
Create database hibernate;
Use hibernate_day01;
CREATE TABLE `cst_customer` (
`cust_name` varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
`cust_user_id` bigint(32) DEFAULT NULL COMMENT '負責人id',
`cust_create_id` bigint(32) DEFAULT NULL COMMENT '建立人id',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客戶資訊來源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客戶所屬行業',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客戶級別',
`cust_linkman` varchar(64) 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=94 DEFAULT CHARSET=utf8;
----------
**第三步:搭建Hibernate的開發環境**
1. 建立WEB工程,引入Hibernate開發所需要的jar包
* MySQL的驅動jar包
* Hibernate開發需要的jar包(資料/hibernate-release-5.0.7.Final/lib/required/所有jar包)
* 日誌jar包(資料/jar包/log4j/所有jar包)
----------
**第四步:編寫JavaBean實體類**
1. Customer類的程式碼如下:
----------
**第五步:建立類與表結構的對映**
1. 在JavaBean所在的包下建立對映的配置檔案
* 預設的命名規則為:實體類名.hbm.xml
* 在xml配置檔案中引入約束(引入的是hibernate3.0的dtd約束,不要引入4的約束)
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
2. 如果不能上網,編寫配置檔案是沒有提示的,需要自己來配置
* 先複製http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd --> window --> preferences --> 搜尋xml --> 選擇xml catalog --> 點選add --> 現在URI --> 貼上複製的地址 --> 選擇location,選擇本地的DTD的路徑
3. 編寫對映的配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 配置類和表結構的對映 -->
<class name="com.itheima.domain.Customer" table="cst_customer">
<!-- 配置id
見到name屬性,JavaBean的屬性
見到column屬性,是表結構的欄位
-->
<id name="cust_id" column="cust_id">
<!-- 主鍵的生成策略 -->
<generator class="native"/>
</id>
<!-- 配置其他的屬性 -->
<property name="cust_name" column="cust_name"/>
<property name="cust_user_id" column="cust_user_id"/>
<property name="cust_create_id" column="cust_create_id"/>
<property name="cust_source" column="cust_source"/>
<property name="cust_industry" column="cust_industry"/>
<property name="cust_level" column="cust_level"/>
<property name="cust_linkman" column="cust_linkman"/>
<property name="cust_phone" column="cust_phone"/>
<property name="cust_mobile" column="cust_mobile"/>
</class>
</hibernate-mapping>
---------
**第六步:編寫Hibernate核心的配置檔案**
1. 在src目錄下,建立名稱為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大引數
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password
* 資料庫的方言(必須配置的)
#hibernate.dialect org.hibernate.dialect.MySQLDialect
* 可選的配置
#hibernate.show_sql true //控制檯列印sql語句
#hibernate.format_sql true //格式化sql預計
#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. 具體的程式碼如下