4.2.1 持久化一個對象

 

你想做的第一件事就是用Session把一個Transient對象持久化。爲了做到這些,你需要使用save()方法:

首先,我們初始化一個user對象。當然,我們也可以在建立Session實例之後再初始化它,它們之間的順序沒有什麼關係。通過SessionFactory來獲得一個Session的實例,然後我們開始一個新事務。

通過調用save()方法把transient對象持久化。這個對象就和當前的Session產生了關聯。然而,沒有任何SQL語句被執行。Hibernate中的Session只在必要的時候纔去執行SQL。

在某些時間點上,持久化對象需要和數據庫保持同步。這發生在Hibernate的Transaction調用commit()方法的時候。在這個例子中,Hibernate取得一個JDBC連接,執行了一個INSERT語句。最後,session被關閉,JDBC連接被釋放。

注意最好在建立對象和Session的關聯之前把它初始化完成。當調用save()方法的時候,SQL INSERT取得了對象中的值。當然,你可以在調用save()方法之後再去修改屬性的值,這樣的修改被認爲是一個SQL的UPDATE。

在session.beginTransaction()和tx.commit()之間做的事情都發生在一個數據庫事務中。我們還沒有詳細的討論事務;在下節中將會討論它。但是要記住在事務中的操作要麼全部成功要麼全部失敗;任何一個UPDATE或者INSERT失敗的話,在數據庫的層面所有的數據狀態都將回滾到保存前的狀態。然而,Hibernate並不會改變持久化對象的狀態;這個時候你要做的就是趕緊拋棄這個失敗的Session。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章