Hibernate框架學習筆記——02

實體類編寫規則

  1. 實體類裏面屬性私有的
  2. 私有屬性使用公開的set和get方法操作
  3. 要求實體類有屬性作爲唯一值(一般使用id值)
  4. 實體類屬性建議不使用基本數據類型,使用基本數據類型對應的包裝類
(1)八個基本數據類型對應的包裝類
- int – Integer
- char—Character、
- 其他的都是首字母大寫 比如 double – Double
(2)比如 表示學生的分數,假如 int score;
- 比如學生得了0分 ,int score = 0;
- 如果表示學生沒有參加考試,int score = 0;不能準確表示學生是否參加考試
	解決:使用包裝類可以了, Integer score = 0,表示學生得了0分,
	表示學生沒有參加考試,Integer score = null;

Hibernate主鍵生成策略

  • hibernate要求實體類裏面有一個屬性作爲唯一值,對應表主鍵,主鍵可以不同生成策略
  • hibernate主鍵生成策略有很多的值
    在這裏插入圖片描述
  • 在class屬性裏面有很多值
    (1)native: 根據使用的數據庫幫選擇哪個值
    (2)uuid:之前web階段寫代碼生成uuid值,hibernate幫我們生成uuid值
    在這裏插入圖片描述

實體類操作

添加操作

  • 調用session裏面的save方法實現
    在這裏插入圖片描述

根據id查詢

  • 調用session裏面的get方法實現
    在這裏插入圖片描述

修改操作

先查詢,再修改
在這裏插入圖片描述

刪除操作

  • 調用session裏面delete方法實現
    在這裏插入圖片描述

實體類對象狀態

  • 瞬時態:對象裏面沒有id值,對象與session沒有關聯
  • 持久態:對象裏面有id值,對象與session關聯
  • 託管態:對象有id值,對象與session沒有關聯

Hibernate一級緩存

什麼是緩存

1 數據存到數據庫裏面,數據庫本身是文件系統,使用流方式操作文件效率不是很高。
(1)把數據存到內存裏面,不需要使用流方式,可以直接讀取內存中數據
(2)把數據放到內存中,提供讀取效率

Hibernate緩存

  1. hibernate框架中提供很多優化方式,hibernate的緩存就是一個優化方式
  2. hibernate一級緩存特點
    (1)hibernate的一級緩存默認打開的
    (2)hibernate的一級緩存使用範圍,是session範圍,從session創建到session關閉範圍
    (3)hibernate的一級緩存中,存儲數據必須 持久態數據
    在這裏插入圖片描述

Hibernate事務代碼規範寫法

//代碼結構
try {
  開啓事務
  提交事務
}catch() {
  回滾事務
}finally {
  關閉
}

public void testTx() {
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		try {
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			//開啓事務
			tx = session.beginTransaction();
			
			//添加
			User user = new User();
			user.setUsername("小馬");
			user.setPassword("250");
			user.setAddress("美國");
			
			session.save(user);
			
			int i = 10/0;
			//提交事務
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			//回滾事務
			tx.rollback();
		}finally {
			//關閉操作
			session.close();
			sessionFactory.close();
		}
	}


Hibernate 的API使用

Query對象

1 使用query對象,不需要寫sql語句,但是寫hql語句
(1)hql:hibernate query language,hibernate提供查詢語言,這個hql語句和普通sql語句很相似
(2)hql和sql語句區別:
- 使用sql操作表和表字段
- 使用hql操作實體類和屬性

2 查詢所有hql語句:
(1)from 實體類名稱

3 Query對象使用
(1)創建Query對象
(2)調用query對象裏面的方法得到結果

在這裏插入圖片描述

Criteria對象

1 使用這個對象查詢操作,但是使用這個對象時候,不需要寫語句,直接調用方法實現
2 實現過程
(1)創建criteria對象
(2)調用對象裏面的方法得到結果

在這裏插入圖片描述

SQLQuery對象

1 使用hibernate時候,調用底層sql實現
2 實現過程
(1)創建對象
(2)調用對象的方法得到結果

在這裏插入圖片描述
注意:上面返回list集合每部分是數組

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