新增資料庫紀錄時,有時會需要該筆紀錄的ID
當你的Table ID是auto increment,
如果是使用傳統的方式(ex: JDBC + MySQL語法),
執行完insert後,要如何取得該紀錄 ID?
1. 看最大的ID:如果這個table有其他process使用,肯定會出事
2. 依照剛剛insert的資料找出ID
2.1 用大量的where, and來找:可以,最後的辦法
2.2 再訂一個 key:不錯,會比上一個簡潔很多
2.3 用其他機制控制(ex : 前端在insert前先確認名稱有無重複):類似上一點,但把事情丟給別人
如果是使用EntityManager(JPA)來處理的話:
em.getTransaction().begin();
em.persist(record);
em.flush();
logger.info(newTask.getId());
em.getTransaction().commit();
使用flush( )之後就馬上拿到ID了,
雖然沒研究Entity底層是怎麼做到的,但至少看起來就是同一個物件
沒有留言:
張貼留言