Hibernate_day02(轉載傳智播客的老師講義,博主只圖檢視方便)
Hibernate_day02
上節內容
1 web內容回顧
2 hibernate概述 (1)orm思想
3 hibernate入門案例
4 hibernate的配置檔案
5 hibernate的核心api |
今天內容
1 實體類編寫規則
2 hibernate主鍵生成策略 (1)native (2)uuid
3 實體類操作 (1)crud操作 (2)實體類物件狀態
4 hibernate的一級快取
5 hibernate的事務操作 (1)事務程式碼規範寫法
6 hibernate其他的api(查詢) (1)Query (2)Criteria (3)SQLQuery |
實體類編寫規則
1 實體類裡面屬性私有的
2 私有屬性使用公開的set和get方法操作
3 要求實體類有屬性作為唯一值(一般使用id值)
4 實體類屬性建議不使用基本資料型別,使用基本資料型別對應的包裝類 (1)八個基本資料型別對應的包裝類 - int – Integer - char—Character、 - 其他的都是首字母大寫 比如 double – Double (2)比如 表示學生的分數,假如 int score; - 比如學生得了0分 ,int score = 0; - 如果表示學生沒有參加考試,int score = 0;不能準確表示學生是否參加考試
|
Hibernate主鍵生成策略
1 hibernate要求實體類裡面有一個屬性作為唯一值,對應表主鍵,主鍵可以不同生成策略
2 hibernate主鍵生成策略有很多的值
3 在class屬性裡面有很多值 (1)native: 根據使用的資料庫幫選擇哪個值 (2)uuid:之前web階段寫程式碼生成uuid值,hibernate幫我們生成uuid值
4 演示生成策略值 uuid (1)使用uuid生成策略,實體類id屬性型別 必須 字串型別 (2)配置部分寫出uuid值
|
實體類操作
對實體類crud操作
新增操作
1 呼叫session裡面的save方法實現 |
根據id查詢
1 呼叫session裡面的get方法實現 |
修改操作
1 首先查詢,修改值 (1)根據id查詢,返回物件 |
刪除操作
1 呼叫session裡面delete方法實現 |
實體類物件狀態(概念)
1 實體類狀態有三種 (1)瞬時態:物件裡面沒有id值,物件與session沒有關聯 (2)持久態:物件裡面有id值,物件與session關聯
(3)託管態:物件有id值,物件與session沒有關聯
2 演示操作實體類物件的方法 (1)saveOrUpdate方法:實現新增、實現修改
|
Hibernate的一級快取
什麼是快取
1 資料存到資料庫裡面,資料庫本身是檔案系統,使用流方式操作檔案效率不是很高。 (1)把資料存到記憶體裡面,不需要使用流方式,可以直接讀取記憶體中資料 (2)把資料放到記憶體中,提供讀取效率 |
Hibernate快取
1 hibernate框架中提供很多優化方式,hibernate的快取就是一個優化方式
2 hibernate快取特點: 第一類 hibernate的一級快取 (1)hibernate的一級快取預設開啟的 (2)hibernate的一級快取使用範圍,是session範圍,從session建立到session關閉範圍 (3)hibernate的一級快取中,儲存資料必須 持久態資料
第二類 hibernate的二級快取 (1)目前已經不使用了,替代技術 redis (2)二級快取預設不是開啟的,需要配置 (3)二級快取使用範圍,是sessionFactory範圍 |
驗證一級快取存在
1 驗證方式 (1)首先根據uid=1查詢,返回物件 (2)其次再根據uid=1查詢,返回物件 第一步執行get方法之後,傳送sql語句查詢資料庫 第二個執行get方法之後,沒有傳送sql語句,查詢一級快取內容 |
Hibernate一級快取執行過程
Hibernate一級快取特性
1 持久態自動更新資料庫
2 執行過程(瞭解) |
Hibernate事務操作
事務相關概念
1 什麼是事務
2 事務特性
3 不考慮隔離性產生問題 (1)髒讀 (2)不可重複讀 (3)虛讀
4 設定事務隔離級別 (1)mysql預設隔離級別 repeatable read |
Hibernate事務程式碼規範寫法
1 程式碼結構 try { 開啟事務 提交事務 }catch() { 回滾事務 }finally { 關閉 } @Test 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繫結session
1 session類似於jdbc的connection,之前web階段學過 ThreadLocal
2 幫實現與本地執行緒繫結session
3 獲取與本地執行緒session (1)在hibernate核心配置檔案中配置 (2)呼叫sessionFactory裡面的方法得到
4 獲取與本地執行緒繫結session時候,關閉session報錯,不需要手動關閉了 |
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集合每部分是陣列
返回list中每部分是物件形式 |
完成任務
1 查詢表所有記錄,把記錄顯示頁面中 (1)servlet裡面呼叫service,service呼叫dao (2)在dao裡面使用hibernate實現操作 (3)在頁面中顯示所有資料 - 在servlet裡面把list集合放到域物件 - 在jsp中使用el表示式+foreach標籤獲取
2 複習知識 (1)一對多和建表 (2)多對多和建表 |
相關文章
- 馬士兵Java和傳智播客Java系列視訊教程免費下載Java
- 傳智播客_畢姥爺_2012年畢向東Java基礎教程_畢向東老師Java
- 最新傳智播客nodejs入門到精通(全套視訊)NodeJS
- 【傳智播客上海校區】TreeMap原始碼解析原始碼
- 傳智播客黑馬.NET+Unity3D 遊戲開發視訊教程Unity3D遊戲開發
- 傳智播客:人工智慧學習線路概況人工智慧
- 傳智播客PHP2015-XML視訊教程 XML-01-xml介紹 筆記PHPXML筆記
- 傳智播客中JavaWeb程式設計任務教程的作業JavaWeb程式設計
- 【傳智播客上海校區】PS製作牛仔布圖示-圖層樣式製造圖示
- (轉載)iOS中獲取某個檢視的截圖iOS
- 【傳智播客上海校區】java類和物件的關係的通俗理解Java物件
- 通義千問-podcast播客AI轉譯與NotebookLMASTAI
- dwg檢視器使用技巧(方便好用的dwg檢視器推薦 )
- 多位央視主播和前同事送別趙赫 張澤群:深切懷念趙赫老師
- 傳智播客上海校區:你為什麼一定要學Python?Python
- 劉鐵猛老師視訊課程“事件”講解程式事件
- 老師變“主播”,但手機這款PDF軟體必不可少
- [轉載]SQLServer之檢視簡介SQLServer
- 自定義檢視---圓角柱狀圖(一)
- 《荒野大鏢客2》與美國浪漫主義的傳承(上篇)
- Swiper輪播檢視器
- 全文檢索的轉義
- 美國老師和中國老師講灰姑娘,這就是差距!
- 檢視錶的定義
- 基於HDPHP的視訊播客開發視訊PHP
- Day31--如何更方便的檢視class檔案
- EtherCAT轉Profinet閘道器配置說明第三講:博圖配置
- 傳智播客上海校區受邀參與“2017華為雲技術私享會
- uniapp自定義卡片輪播圖APP
- Rust 程式設計視訊教程對應講解內容-傳播錯誤Rust程式設計
- 00後手機裡的祕密:給主播打賞6000塊 和數學老師打王者
- [20240911]檢視超長檢視的定義2.txt
- 自定義檢視指令
- 機器裝置維護工人在傳智播客上海校區找到改變命運的機會
- 攀爬「老滾 5」高度寫實主義世界的高峰
- 一個 react 的小專案方便檢視 github 上的筆記ReactGithub筆記
- 檢視SQLSERVER主鍵列SQLServer
- 傳智播客上海校區知識點解析:簡單模擬vue中的雙向資料繫結Vue