Bulk & History
แยกความแตกต่างระหว่างการบันทึกทั่วไปที่ใช้วงจรชีวิตการบันทึกและการแทรก/อัปเซิร์ตแบบกลุ่ม, การลบสำรอง, การถ่ายภาพประวัติ
บันทึก / บันทึกทั้งหมด
save(entity)
หากไม่มี id ให้ใช้ insertOne หากมี id ให้ใช้ _id เป็นเกณฑ์ replaceOne(..., upsert=true)
saveAll(...)
ทำการ save() สำหรับแต่ละเอนทิตี ดังนั้น hook วงจรชีวิต beforePersist/afterPersist จะถูกนำไปใช้
เลือก Bulk API
saveAllBulk
การแทรกแบบกลุ่มที่ใช้ insertMany ไม่ใช่ API ที่อัปเดต id ที่มีอยู่
saveAllBulkUpsert
หากเอนทิตีไม่มี id ให้ทำการแทรก หากมีให้ทำการกรอง _id + $set + upsert
saveAllBulkUpsertByKey
ทำการ upsert ตามคีย์ของงาน หากคีย์ใดคีย์หนึ่งไม่มี เอนทิตีนั้นจะถูกจัดการเป็นการแทรก
การลบเอนทิตีและการลบสำรอง
backup을 활성화하면 <sourceCollection>_remove collection을 사용합니다. delete와 backup을 하나의 원자 작업으로 묶어야 한다면 호출 측에서 getTxJob(...) transaction 범위를 잡습니다.
ภาพรวมประวัติศาสตร์
createHistory는 현재 MongoExecutionContext.write(...) 결과를 deep copy하고 _id를 제거한 뒤 <sourceCollection>_history 또는 지정한 prefix collection에 insert합니다. history write도 save lifecycle hook을 호출하지 않습니다.