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屬性。
來自為知筆記(wiz)sessionfactory sessionfactory = new sessionfactory();
session session = null;
trycatch(exception e)finally
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中的...