atitit.hbnt orm db 新新增更新最佳實務o99,ormo99

來源:互聯網
上載者:User

atitit.hbnt orm db 新新增更新最佳實務o99,ormo99

atitit.hbnt orm db 新新增更新最佳實務o99

 

1. merge跟個save了. 1

2. POJO對象處於游離態、持久態、託管態。使用merge()的情況。 1

3. @DynamicInsert @DynamicUpdate 2

4. 實際調用merge()產生的sql 2

5. 參考 2

 

 

1. merge跟個save了.

Update

UpdateorSave 已經不推薦了...

產生的黑頭子有個merge跟個save了...

 

2. POJO對象處於游離態、持久態、託管態。使用merge()的情況。

測試過程中游離態、持久態、有用

1、游離態ID為空白,資料庫肯定不存在,調用merge(),直接插入資料庫。

2、持久態,pojo對象從資料庫中取出的行記錄,調用merge(),自動比較該對象和資料庫物件是否發生更改,是則更新該行記錄。

 

3、託管態,通過編程的方式指定ID,程式構造的POJO對象,調用merge(),自動比較資料庫該ID行記錄與POJO對象的屬性。不一樣則更新。

但通過程式構造的POJO對象,並指定ID。但POJO的ID為native,並指定了資料庫的sequence,調用merge()後,程式指定的ID,還是會被改成新的序列ID,則,該POJO對象還是成了ID不為空白、資料庫不存在該ID的游離態。

作者:: 老哇的爪子 Attilax 艾龍,  EMAIL:1466519819@qq.com

轉載請註明來源: http://blog.csdn.net/attilax

 

3. @DynamicInsert @DynamicUpdate4. 實際調用merge()產生的sql

首先select在up

select gvmaterial0_.material_id as material1_0_0_, gvmaterial0_.application_type as applicat2_0_0_, gvmaterial0_.can_down_org as can3_0_0_, gvmaterial0_.create_time as create4_0_0_, gvmaterial0_.effectie_time as effectie5_0_0_, gvmaterial0_.failure_time as failure6_0_0_, gvmaterial0_.file_path as file7_0_0_, gvmaterial0_.material_description as material8_0_0_, gvmaterial0_.material_type as material9_0_0_, gvmaterial0_.play_time as play10_0_0_, gvmaterial0_.size as size0_0_, gvmaterial0_.update_time as update12_0_0_, gvmaterial0_.update_user as update13_0_0_ from gv_material gvmaterial0_ where gvmaterial0_.material_id=1

 

   32 Query update gv_material set play_time=125 where material_id=1

 

5. 參考

Hibernate更新某些欄位的幾種update方法 - zb0567的專欄 - 部落格頻道 - CSDN.NET.htm




相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.