1. 程式人生 > >Hibernate入門(四)之hibernate中session的建立方式

Hibernate入門(四)之hibernate中session的建立方式

為什麼要專注於session的建立方式

在有些場景必須關注session的建立,比如說在銀行轉賬操作的時候,兩個賬戶轉賬必須在同一個session中

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

如上面所示,賬戶1錢沒了,賬戶2錢卻沒有到,原因就在於兩者不再同一個事務當中,不能實現事務的回滾。

getCurrentSession

說明:
1、產生方式的說明
1、先檢查當前執行緒中是否有session
2、如果當前執行緒中有session,則把session提取出來,直接使用
3、如果當前執行緒中沒有session,則採用openSession方法建立session
4、把新建立的session放入到threadlocal中
5、當再次得到session的時候就是從當前執行緒中獲取了

2、用法
1、在hibernate.cfg.xml檔案中
這裡寫圖片描述
說明session從當前執行緒中獲取
2、在程式碼中
這裡寫圖片描述
說明:
1、crud操作必須在事務的條件下執行
2、當事務提交的時候,session自動關閉
3、這種做法相當於把session和事務繫結在一起了

session總結

1、資料庫的連結是由session來完成的
2、事務是由session產生的
3、Crud操作是由session完成的
4、一級快取就是session的快取,可以存放持久化物件
5、Session可以有兩種開啟方式 openSession和getCurrentSession