注意:?
MERGE語句是SQL語句的一種。在SQL Server、Oracle數據庫中可用,MySQL、PostgreSQL中不可用。
?
1》session1.merge(T entity) 合并實體的方法。
2》merge的作用是:新new一個對象,如果該對象設置了ID,則這個對象就當作游離態處理:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當ID在數據庫中不能找到時,用update的話肯定會報異常,然而用merge的話,就會insert。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當ID在數據庫中能找到的時候,update與merge的執行效果都是更新數據,發出update語句;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 如果沒有設置ID的話,則這個對象就當作瞬態處理:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用update的話,由于沒有ID,所以會報異常,merge此時則會保存數據,根據ID生產策略生成一條數據;
3》作用類似與saveOrUpdate()方法,作用基本一致,不過略有區別。
4》與saveOrUpdate()方法的區別是:
1.saveOrUpdate()是完全更新數據
2.merge()方法在更新數據的時候,例如數據庫中本條數據的name這個字段是‘李四’,而新的要合并的數據中name字段是null,那數據庫中name字段的數據是不被替換的,依舊是'李四',而其他字段被替換。