الكتلة والتاريخ
يميز بين السلوك العام للحفظ الذي تنطبق عليه دورة الحياة وحفظ الدفعات / الإدراج / التحديث، وإزالة النسخ الاحتياطية، ولقطات التاريخ.
save / saveAll
save(entity)
إذا لم يكن هناك id، استخدم insertOne، وإذا كان هناك id، استخدم replaceOne(..., upsert=true) بناءً على _id.
saveAll(...)
يتم تنفيذ save() لكل كيان، لذا يتم تطبيق خطاف دورة الحياة beforePersist/afterPersist.
اختيار واجهة برمجة التطبيقات بالجملة
saveAllBulk
إدراج دفعة يعتمد على insertMany. ليس واجهة برمجة تطبيقات لتحديث المعرفات الموجودة.
saveAllBulkUpsert
إذا لم يكن هناك معرف كيان، يتم الإدراج، وإذا كان موجودًا، يتم تنفيذ فلتر _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을 호출하지 않습니다.