教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Hibernate框架入門之Session接口

更新時間:2024年01月19日11時05分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  Session是Java應(yīng)用程序和Hibernate進(jìn)行交互時所使用的主要接口,是持久化操作的核心API。它主要用于讀取、創(chuàng)建和刪除映射對象的實(shí)例,這一系列的操作將被轉(zhuǎn)換為數(shù)據(jù)表中的增加、修改、查詢和刪除操作。Session是輕量級的,實(shí)例的創(chuàng)建和銷毀不需要消耗太多的資源,同時它還是Hibernate的一級緩存,這個緩存主要用于存放當(dāng)前工作單元加載的對象。

  獲取Session實(shí)例有兩種方式,一種是通過openSession()方法,另一種是通過getCurrentSession()方法。兩種方法獲取Session的代碼如下所示:

  以上兩種獲取Session實(shí)例的主要區(qū)別是:采用openSession()方法獲取Session實(shí)例時,SessionFactory直接創(chuàng)建一個新的Session實(shí)例,并且在使用完成后需要調(diào)用close()方法進(jìn)行手動關(guān)閉;而getCurrentSession()方法創(chuàng)建的Session實(shí)例會被綁定到當(dāng)前線程中,它在提交或回滾操作時會自動關(guān)閉。

  在Session中,提供了多個持久化的操作方法,其常用方法如表23-8所示。

  表23-8 Session中的常用方法

Session中的常用方法

  需要注意的是,Session是線程不安全的,當(dāng)多個并發(fā)線程同時操作一個Session實(shí)例時,就可能導(dǎo)致Session數(shù)據(jù)存取的混亂(當(dāng)方法內(nèi)部定義和使用Session時,不會出現(xiàn)線程問題)。因此設(shè)計(jì)軟件架構(gòu)時,應(yīng)避免多個線程共享一個Session實(shí)例。

0 分享到:
和我們在線交談!