Hibernate框架學習筆記——01

什麼是框架?

簡單來說:寫程序,使用框架之後,幫我們實現一部分功能,使用框架好處,少寫一部分代碼實現功能

什麼是Hibernate框架?

  • hibernate框架應用在javaee三層結構中 dao層框架
  • 在dao層裏面做對數據庫crud操作,使用hibernate實現crud操作,hibernate底層代碼就是jdbc,hibernate對jdbc進行封裝,使用hibernate好處,不需要寫複雜jdbc代碼了,不需要寫sql語句實現
  • hibernate開源1輕量級的框架
  • hibernate版本 – Hibernate5.x (現在通用5版本)

什麼是ORM思想?

  • hibernate使用orm思想對數據庫進行crud操作
  • 在web階段學習 javabean,更正確的叫法 實體類
  • orm:object relational mapping,對象關係映射
  • orm文字描述:
    (1)讓實體類和數據庫表進行一一對應關係
    讓實體類首先和數據庫表對應
    讓實體類屬性 和 表裏面字段對應
    (2)不需要直接操作數據庫表,而操作表對應實體類對象

Hibernate入門

環境搭建

  1. 導入相關jar包

在這裏插入圖片描述
注意:因爲使用hibernate時候,有日誌信息輸出,hibernate本身沒有日誌輸出的jar包,導入其他日誌的jar包。還有鏈接數據庫驅動jar包。
2. 創建實體類
使用hibernate時候,不需要自己手動創建表,hibernate幫把表創建
3. 配置實體類和數據庫表一一對應關係(映射關係)

使用配置文件實現映射關係
(1)創建xml格式的配置文件
 1. 映射配置文件名稱和位置沒有固定要求
 2. 建議:在實體類所在包裏面創建,實體類名稱.hbm.xml
(2)配置是是xml格式,在配置文件中首先引入xml約束
 3. 學過約束dtd、schema,在hibernate裏面引入的約束dtd約束
 4. <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">3)配置映射關係
<hibernate-mapping>
	<!-- 1 配置類和表對應 
		class標籤
		name屬性:實體類全路徑
		table屬性:數據庫表名稱
	-->
	<!-- 2 配置實體類id和表id對應 
			hibernate要求實體類有一個屬性唯一值
			hibernate要求表有字段作爲唯一值
		-->
		<!-- id標籤
			name屬性:實體類裏面id屬性名稱
			column屬性:生成的表字段名稱
		 -->
</hibernate-mapping>
  1. 創建hibernate的核心配置文件
1)核心配置文件格式xml,但是核心配置文件名稱和位置固定的
 - 位置:必須src下面
 - 名稱:必須hibernate.cfg.xml
(2)引入dtd約束
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">3)hibernate操作過程中,只會加載核心配置文件,其他配置文件不會加載
第一部分: 配置數據庫信息 必須的
第二部分: 配置hibernate信息 可選的
第三部分: 把映射文件放到核心配置文件中

Hibernate配置文件詳解

Hibernate映射配置文件

  • 映射配置文件名稱和位置沒有固定要求
  • 映射配置文件中,標籤name屬性值寫實體類相關內容
    (1)class標籤name屬性值實體類全路徑
    (2)id標籤和property標籤name屬性值 實體類屬性名稱
  • id標籤和property標籤,column屬性可以省略的
    不寫值和name屬性值一樣的
  • property標籤type屬性,設置生成表字段的類型,自動對應類型

Hibernate核心配置文件

  • 核心配置文件名稱和位置固定的
    (1)位置:src下面
    (2)名稱:hibernate.cfg.xml

  • 配置三部分要求
    (1)數據庫部分必須的
    (2)hibernate部分可選的
    (3)映射文件必須的

實現添加操作

@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();
	}

看結果:

  • 是否生成表
  • 看錶是否有記錄

Hibernate核心API

1.Configuration
到src下面找到名稱hibernate.cfg.xml配置文件,創建對象,把配置文件放到對象裏面(加載核心配置文件)
2.SessionFactory

  • 使用configuration對象創建sessionFactory對象
    創建sessionfactory過程中做事情:
    根據核心配置文件中,有數據庫配置,有映射文件部分,到數據庫裏面根 據映射關係把表創建
<property name="hibernate.hbm2dll.auto">upadte</property>
  • 創建sessionFactory過程中,這個過程特別耗資源的
    在hibernate操作中,建議一個項目一般創建一個sessionFactory對象

3.Session

  • session類似於jdbc中connection
  • 調用session裏面不同的方法實現crud操作
    (1)添加 save方法
    (2)修改 update方法
    (3)刪除 delete方法
    (4)根據id查詢 get方法
  • session對象單線程對象 session對象不能共用,只能自己使用

4 Transaction

  • 事務對象
    開啓事務:Transaction tx = session.beginTransaction();

  • 事務提交和回滾方法:commit() | rollback()

  • 事務概念 事務四個特性
    原子性、一致性、隔離性、持久性


  1. 源代碼開放且免費 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章