hibernate學習隨記

2022-08-03 15:42:09 字數 1686 閱讀 7047

hibernate學習隨記:

一:hibernate的核心類和介面

①  configuration 類

它的用處是:

讀取hibernate.cfg.xml

載入hibernate 的驅動,url ,使用者..

管理hibernate配置資訊

②  hibernate.cfg.xml

③  物件關係對映檔案

④  sessionfactory (會話工廠)

可以快取sql語句和資料(稱為session級快取)!!

是乙個重量級的類,因此我們需要保證乙個資料庫,有乙個sessionfactroy

二: 討論乙個通過sessionfactory 獲取 session的兩個方法 opensession() 乙個 getcurrentsession();

opensession() 是獲取乙個新的session

getcurrentsession () 獲取和當前執行緒繫結的session,換言之,在同乙個執行緒中,我們獲取的session是同一session,這樣可以利於事務控制

如果希望使用 getcurrentsession 需要配置 hibernate.cfg.xml中配置.

如何選擇

原則:①如果需要在同一執行緒中,保證使用同乙個session則,使用getcurrentsession()

②如果在乙個執行緒中,需要使用不同的session,則使用opentsession()

通過 getcurrentsession() 獲取的session在事務提交後,會自動關閉,通過opensession()獲取的session則必須手動關閉

如果是通過getcurrentsession() 獲取 sesssion ,進行查詢需要事務提交.

三:   如何確定你的session有沒有及時關閉

windows  cmd  netstat –an      [oracle 1521 mysql 3306 sql server 1433]

linux/unix  netstat –anp  top 

⑤  session介面

它的主要功能和作用是:

session乙個例項代表與資料庫的一次操作(當然一次操作可以是crud組合)

session例項通過sessionfactory獲取,用完需要關閉。

session是執行緒不同步的(不安全),因此要保證在同一執行緒中使用,可以用getcurrentsessiong()。

session可以看做是持久化管理器,它是與持久化操作相關的介面

//查詢方法get vs load

get vs load

如果查詢不到資料,get 會返回 null,但是不會報錯, load 如果查詢不到資料,則報錯objectnotfoundexception

使用get 去查詢資料,(先到一級/二級)會立即向db發出查詢請求(select ...), 如果你使用的是 load查詢資料,(先到一級、二級))即使查詢到物件,返回的是乙個**物件,如果後面沒有使用查詢結果,它不會真的向資料庫發select ,當程式設計師使用查詢結果的時候才真的發出select ,這個現象我們稱為懶載入(lazy)

通過修改配置檔案,我們可以取消懶載入

如何選擇使用哪個: 如果你確定db中有這個物件就用load(),不確定就用get()(這樣效率高)

學習隨記 websocket

知乎上乙個講解的非常好 首先,websocket是乙個html5出的協議 為什麼要出這個協議?因為 1.http不是持久鏈結,每次鏈結都耗時 即http是非狀態,每次都要重新鑑別,告訴服務端你是誰,浪費了流量和時間 so 出現websocket websocket是持久化的協議,它是基於http 首...

GO 學習隨記

for迴圈中用的變數是復用的,配合閉包,啟用goroutine的時候要特別小心。func main time.sleep time.second result 4444package main import time func main time.sleep time.second result 1...

git git學習隨記

git是乙個開源的分布式版本控制系統,可以有效 高速地處理從很小到非常大的專案版本管理。下面是我對git學習的一些筆記 不定期更新擴充套件 touch 檔名.檔案字尾上述命令有兩個作用 1 git fetch 相當於是從遠端獲取最新到本地,不會自動merge,操作如下 git fetch origi...