使用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. }






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM