使用Hibernate框架來更新物件的注意事項

2021-07-09 05:05:36 字數 1178 閱讀 9338

hibernate在更新物件的時候,如果物件的有些屬性沒有設定,那麼在更新的時候,會被預設為空。

特別在更新表單物件的時候。

例子:如: department部門類

該部門類有以下屬性: 

id : long 

name : string (注:部門名稱)

description : string  (注:部門說明)

parent : department  (注:上級部門)

children : set(注:下級部門)

修改頁面表單: 除了children屬性沒有提供設定外,其他屬性都有相應的輸入框等進行設定(其中id是隱藏字段)。

那麼該頁面提交到的頁面表單物件是只包含了id, name , description , parent 的實體,如果直接使用該物件進行更新的話,那麼就會使得該物件修改之前的children屬性為空。

也就是說,如果該「開發部門」物件,通過session.update(department)後,「開發部門」物件下的「研發組」,「程式設計組」等下級部門就變成了沒有上級部門的部門。

如果需要只改變「開發部門」部門物件的name屬性和description、parent屬性,而不改變原有的「children」屬性,那麼,我們就要使用以下的方法來進行更新,而不是直接更新。

首先,通過頁面表單傳遞過來的「開發部門」部門的id進行查詢在資料庫中的該持久化物件;

然後,通過給該持久化物件的name,description,parent 屬性進行set()方法賦值;

最後,使用session.update()方法,更新該持久化物件,那麼就會只更新了該持久化物件的name,description,parent屬性。而不改變原有的children屬性。

sessionfactory sessionfactory = new sessionfactory();session session = null;trycatch(exception e)finally

來自為知筆記(wiz)

hibernate 框架的簡單使用

com.mysql.jdbc.driver jdbc mysql test lflf true true update org.hibernate.dialect.mysqldialect class標籤 name屬性 實體類全路徑 table屬性 資料庫表名稱 package cn.zr.hibe...

理解hibernate框架

只有足夠的經歷才能更好的理解乙個框架的作用。例如 之前,知道hibernate框架是用來持久化資料的。但覺得用jdbc我就可以實現了,為什麼要使用hibernate框架那麼麻煩呢。直到昨天晚上,有個外包專案。跟我正在做的很一樣,只是資料庫不同。在這種情況下,如果使用hibernate框架作持久化資料...

Hibernate框架快取

一級快取 hibernate框架一級快取的特點 1.它是hibernate自帶的,不用我們手動配置。2.它是以k v對的方式儲存資料,以key去獲得po物件。3.只在同乙個中session共享。由於是hibernate自身就帶有的,所以使用時不需要配置xml的工作,只要知道在同乙個session中的...