SSH學習之Session接口的常用方法

回憶

在上一篇播客SSH學習之Hibernate的第一個程序中介紹了基本的Hibernate框架的開發搭建環境,瞭解了Hibernate的基本過程。在這一篇裏,我要介紹的是我麼使用Hibernate框架最爲常用的東西:數據庫的操作方法。在之前的博客中也介紹了Session接口對數據庫操作的一些方法,這裏就詳細的講講這些方法的使用。

對象的三種狀態

臨時態(或者瞬時態)
  • 實體類對象中標識符沒有值(除了assigned指定之外)且和表沒有任何關聯,沒有和session相關聯。
  • 與數據庫中的記錄沒有任何關聯,也就是沒有與其相關聯的數據庫信息。
  • 與session對象沒有任何關係,也就是session沒有對他進行任何操作。
持久態
  • 實體類對象標識符有值,並且和session相關聯,持久態的對象會自動更新數據庫。
  • 處於持久態的實體類對象最大的特徵是對其所做的任何更改操作都會更新到數據庫中。
託管態(或者遊離態)
  • 對象裏有標識符值,但是和session卻沒有關聯。
  • 託管態對象一定是有持久態對象轉換而來。
  • 對託管態對象所做的所有操作都不會影響到數據庫的信息。
三種狀態的轉換

常用方法

get方法
通過該方法可以獲取持久化對象。
  • 書寫方式:session.get(類名.class, 標識符)
  • 過程:通過id值在session緩存中查找對象,如果存在就返回,如果不存在就從數據庫中加載此對象。
load方法
通過該方法可以獲取持久化對象。
  • 書寫方式:session.load(類名.class, 標識符)
  • 過程與get方式相同。
get和load的區別
  • 在立即從數據庫中加載對象時,如果存在與標識符相對應的記錄,則兩者均會返回對象,如果不存在,get方式返回null,load方式拋出一個異常。
save方法
通過該方法可以向數據庫中保存一個對象,即一條記錄。
  • 書寫方式:session.save(對象)
  • 在沒有將對象和session相關聯時,對象的標識符爲null。
  • save方法調用時,框架就會爲對象指定一個標識符作爲主鍵。
  • save方法只是將對象存入到session的緩存中,並沒有保存到數據庫。
  • 提交事務時,將會清理session緩存,生成sql語句將對象保存到數據庫中。
update方
更改已經存在數據庫信息。
  • 書寫方式:session.update(對象)
  • 過程:首先需要獲取到該對象,然後對其進行更改,再用update方法將其更改。
saveOrUpdate方法
對脫管態對象使用save方法是不對的,對臨時態對象使用update方法也不對。saveOrUpdate方法同時兼具兩種方法的功能,對於傳入的對象首先判斷該對象是託管態還是臨時態,然後再調用相應的方法。
delete方法
這個方法是用來刪除某一個對象的。
  • 書寫方式:session.delete(對象)
  • 過程:首先需要獲取到該對象,然後對其進行更改,再將其刪除。

多餘的話

在實際的開發中,我們操作得最多的還是查詢操作,所以Hibernate框架又專門提供了另一個接口對數據庫進行查詢,Query接口,在後續記錄中會講解他的常用方法,以及如何進行分頁查詢等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章