Hibernate_day01
一、今天內容介紹
1 web內容回顧
(1)javaee三層結構
(2)mvc思想
2 hibernate概述
3 hibernate入門案例
4 hibernate配置檔案
5 hibernate的api使用
二、WEB內容回顧
1.JavaEE三層結構
1 web層:struts2框架
2 service層:spring框架
3 dao層:hibernate框架
(1)對資料庫進行crud操作
2.MVC思想
1 m:模型
2 v:檢視
3 c:控制器
三、Hibernate概述
1.什麼是框架
1 寫程式,使用框架之後,幫我們實現一部分功能,使用框架好處,少寫一部分程式碼實現功能
2.什麼是hibernate框架(重點)
1 hibernate框架應用在javaee三層結構中 dao層框架
2 在dao層裡面做對資料庫crud操作,使用hibernate實現crud操作,hibernate底層程式碼就是jdbc,hibernate對jdbc進行封裝,使用hibernate好處,不需要寫複雜jdbc程式碼了,
不需要寫sql語句實現
3 hibernate開源的輕量級的框架
4 hibernate版本
Hibernate3.x
Hibernate4.x
Hibernate5.x(學習)
lib:hibernate相關jar包
3.什麼是orm思想(重點)
1 hibernate使用orm思想對資料庫進行crud操作
2 在web階段學習 javabean,更正確的叫法 實體類
3 orm:object relational mapping,物件關係對映
文字描述:
(1)讓實體類和資料庫表進行一一對應關係
讓實體類首先和資料庫表對應
讓實體類屬性 和 表裡面欄位對應
(2)不需要直接操作資料庫表,而操作表對應實體類物件
畫圖描述:
四、Hibernate入門
1.搭建hibernate環境(重點)
第一步 匯入hibernate的jar包
因為使用hibernate時候,有日誌資訊輸出,hibernate本身沒有日誌輸出的jar包,匯入其他日誌的jar包
不要忘記還有mysql驅動的jar包
第二步 建立實體類
(1)使用hibernate時候,不需要自己手動建立表,hibernate幫把表建立
第三步 配置實體類和資料庫表一一對應關係(對映關係)
使用配置檔案實現對映關係
(1)建立xml格式的配置檔案
- 對映配置檔名稱和位置沒有固定要求
- 建議:在實體類所在包裡面建立,實體類名稱.hbm.xml
(2)配置是是xml格式,在配置檔案中首先引入xml約束
- 學過約束dtd、schema,在hibernate裡面引入的約束dtd約束
(3)配置對映關係
<!-- 1 配置類和表對應 class標籤 name屬性:實體類全路徑 table屬性:資料庫表名稱 --> <class name="cn.itcast.entity.User" table="t_user"> <!-- 2 配置實體類id和表id對應 hibernate要求實體類有一個屬性唯一值 hibernate要求表有欄位作為唯一值 --> <!-- id標籤 name屬性:實體類裡面id屬性名稱 column屬性:生成的表字段名稱 --> <id name="uid" column="uid"> <!-- 設定資料庫表id增長策略 native:生成表id值就是主鍵自動增長 --> <generator class="native"></generator> </id> <!-- 配置其他屬性和表字段對應 name屬性:實體類屬性名稱 column屬性:生成表字段名稱 --> <property name="username" column="username"></property> <property name="password" column="password"></property> <property name="address" column="address"></property> </class> </hibernate-mapping>
第四步 建立hibernate的核心配置檔案
(1)核心配置檔案格式xml,但是核心配置檔名稱和位置固定的
- 位置:必須src下面
- 名稱:必須hibernate.cfg.xml
(2)引入dtd約束
(3)hibernate操作過程中,只會載入核心配置檔案,其他配置檔案不會載入
第一部分: 配置資料庫資訊 必須的
第二部分: 配置hibernate資訊 可選的
第三部分: 把對映檔案放到核心配置檔案中
2.實現新增操作
第一步 載入hibernate核心配置檔案
第二步 建立SessionFactory物件
第三步 使用SessionFactory建立session物件
第四步 開啟事務
第五步 寫具體邏輯 crud操作
第六步 提交事務
第七步 關閉資源
@Test public void testAdd() { //第一步 載入hibernate核心配置檔案 // 到src下面找到名稱是hibernate.cfg.xml //在hibernate裡面封裝物件 Configuration cfg = new Configuration(); cfg.configure(); //第二步 建立SessionFactory物件 //讀取hibernate核心配置檔案內容,建立sessionFactory //在過程中,根據對映關係,在配置資料庫裡面把表建立 SessionFactory sessionFactory = cfg.buildSessionFactory(); //第三步 使用SessionFactory建立session物件 // 類似於連線 Session session = sessionFactory.openSession(); //第四步 開啟事務 Transaction tx = session.beginTransaction(); //第五步 寫具體邏輯 crud操作 //新增功能 User user = new User(); user.setUsername("小王"); user.setPassword("250"); user.setAddress("日本"); //呼叫session的方法實現新增 session.save(user); //第六步 提交事務 tx.commit(); //第七步 關閉資源 session.close(); sessionFactory.close(); }
看到效果:
(1)是否生成表
(2)看錶是否有記錄
五、Hibernate配置檔案詳解
1.Hibernate對映配置檔案(重點)
1 對映配置檔名稱和位置沒有固定要求
2 對映配置檔案中,標籤name屬性值寫實體類相關內容
(1)class標籤name屬性值實體類全路徑
(2)id標籤和property標籤name屬性值 實體類屬性名稱
3 id標籤和property標籤,column屬性可以省略的
(1)不寫值和name屬性值一樣的
4 property標籤type屬性,設定生成表字段的型別,自動對應型別
2.Hibernate核心配置檔案
1 配置寫位置要求
2 配置三部分要求
(1)資料庫部分必須的
(2)hibernate部分可選的
(3)對映檔案必須的
3 核心配置檔名稱和位置固定的
(1)位置:src下面
(2)名稱:hibernate.cfg.xml
六、Hibernate核心api
1.Configuration
(1)到src下面找到名稱hibernate.cfg.xml配置檔案,建立物件,把配置檔案放到物件裡面(載入核心配置檔案)
2.SessionFactory
1 使用configuration物件建立sessionFactory物件
(1)建立sessionfactory過程中做事情:
- 根據核心配置檔案中,有資料庫配置,有對映檔案部分,到資料庫裡面根據對映關係把表建立
2 建立sessionFactory過程中,這個過程特別耗資源的
(1)在hibernate操作中,建議一個專案一般建立一個sessionFactory物件
3 具體實現
(1)寫工具類,寫靜態程式碼塊實現
* 靜態程式碼塊在類載入時候執行,執行一次
3.Session(重點)
1 session類似於jdbc中connection
2 呼叫session裡面不同的方法實現crud操作
(1)新增 save方法
(2)修改 update方法
(3)刪除 delete方法
(4)根據id查詢 get方法
3 session物件單執行緒物件
(1)session物件不能共用,只能自己使用
4.Transaction
1 事務物件
2 事務提交和回滾方法
3 事務概念
(1)事務四個特性
原子性、一致性、隔離性、永續性
七、解決配置檔案沒有提示問題
1 可以上網
2 把約束檔案引入到eclipse中
(1)在配置檔案中複製一句話
重啟eclipse開發工具
八、演示常見錯誤
1 在對映配置檔案中,把name屬性值寫錯了,和實體類屬性名稱不一樣,出現異常
2 在核心配置檔案中,沒有引入對映配置檔案
3 測試配置是否正確
(1)在工具類,寫靜態程式碼塊,建立sessionFactory,過程中根據配置把表建立
(2)讓工具類執行,在工具類寫main方法可以了
(3)如果出現異常,彈出框
點選確定,在控制檯有異常輸出
4 配置檔案裡面屬性值,雙引號裡面不能有空格
5 注意輸入法全形問題
參考資料:
《黑馬程式設計師》