1 web內容回顧java
(1)javaee三層結構mysql
(2)mvc思想程序員
2 hibernate概述web
3 hibernate入門案例spring
4 hibernate配置文件sql
5 hibernate的api使用數據庫
1 web層:struts2框架api
2 service層:spring框架session
3 dao層:hibernate框架mvc
(1)對數據庫進行crud操做
1 m:模型
2 v:視圖
3 c:控制器
1 寫程序,使用框架以後,幫咱們實現一部分功能,使用框架好處,少寫一部分代碼實現功能
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包
1 hibernate使用orm思想對數據庫進行crud操做
2 在web階段學習 javabean,更正確的叫法 實體類
3 orm:object relational mapping,對象關係映射
文字描述:
(1)讓實體類和數據庫表進行一一對應關係
讓實體類首先和數據庫表對應
讓實體類屬性 和 表裏面字段對應
(2)不須要直接操做數據庫表,而操做表對應實體類對象
畫圖描述:
第一步 導入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信息 可選的
第三部分: 把映射文件放到核心配置文件中
第一步 加載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)看錶是否有記錄
1 映射配置文件名稱和位置沒有固定要求
2 映射配置文件中,標籤name屬性值寫實體類相關內容
(1)class標籤name屬性值實體類全路徑
(2)id標籤和property標籤name屬性值 實體類屬性名稱
3 id標籤和property標籤,column屬性能夠省略的
(1)不寫值和name屬性值同樣的
4 property標籤type屬性,設置生成表字段的類型,自動對應類型
1 配置寫位置要求
2 配置三部分要求
(1)數據庫部分必須的
(2)hibernate部分可選的
(3)映射文件必須的
3 核心配置文件名稱和位置固定的
(1)位置:src下面
(2)名稱:hibernate.cfg.xml
(1)到src下面找到名稱hibernate.cfg.xml配置文件,建立對象,把配置文件放到對象裏面(加載核心配置文件)
1 使用configuration對象建立sessionFactory對象
(1)建立sessionfactory過程當中作事情:
- 根據核心配置文件中,有數據庫配置,有映射文件部分,到數據庫裏面根據映射關係把表建立
2 建立sessionFactory過程當中,這個過程特別耗資源的
(1)在hibernate操做中,建議一個項目通常建立一個sessionFactory對象
3 具體實現
(1)寫工具類,寫靜態代碼塊實現
* 靜態代碼塊在類加載時候執行,執行一次
1 session相似於jdbc中connection
2 調用session裏面不一樣的方法實現crud操做
(1)添加 save方法
(2)修改 update方法
(3)刪除 delete方法
(4)根據id查詢 get方法
3 session對象單線程對象
(1)session對象不能共用,只能本身使用
1 事務對象
2 事務提交和回滾方法
3 事務概念
(1)事務四個特性
原子性、一致性、隔離性、持久性
1 能夠上網
2 把約束文件引入到eclipse中
(1)在配置文件中複製一句話
重啓eclipse開發工具
1 在映射配置文件中,把name屬性值寫錯了,和實體類屬性名稱不同,出現異常
2 在覈心配置文件中,沒有引入映射配置文件
3 測試配置是否正確
(1)在工具類,寫靜態代碼塊,建立sessionFactory,過程當中根據配置把表建立
(2)讓工具類執行,在工具類寫main方法能夠了
(3)若是出現異常,彈出框
點擊肯定,在控制檯有異常輸出
4 配置文件裏面屬性值,雙引號裏面不能有空格
5 注意輸入法全角問題
參考資料:
《黑馬程序員》