使用Hibernate框架來更新對象的注意事項

Hibernate在更新對象的時候,如果對象的有些屬性沒有設置,那麼在更新的時候,會被默認爲空。
特別在更新表單對象的時候。
例子:
如: Department部門類
該部門類有以下屬性: 
id : Long 
name : String (注:部門名稱)
description : String  (注:部門說明)
parent : Department  (注:上級部門)
children : Set<Department> (注:下級部門)

修改頁面表單: 除了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屬性。

session更新對象的參考代碼:
  1. SessionFactory sessionFactory = new SessionFactory();
  2. Session session = null;
  3. try{
  4. session = sessionFactory.openSession();
  5. session.beginTranscation();
  6. session.update(entity);
  7. session.getTransaction().commit();
  8. }catch(Exception e){
  9. session.getTransaction().rollback();
  10. }finally{
  11. session.flush();
  12. session.close();
  13. }





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