Bulk & Histórico
Distingue o comportamento entre salvamento geral com ciclo de vida aplicado e inserção/upsert em massa, backup de remoção, instantâneo de histórico.
save / saveAll
save(entity)
Se não houver id, usa insertOne; se houver id, usa _id para replaceOne(..., upsert=true).
saveAll(...)
Executa save() para cada entidade, portanto, o hook de ciclo de vida beforePersist/afterPersist é aplicado.
Escolha da API em massa
saveAllBulk
Inserção em massa baseada em insertMany. Não é uma API para atualizar ids existentes.
saveAllBulkUpsert
Se a entidade não tiver id, insere; se tiver, realiza filtro _id + $set + upsert.
saveAllBulkUpsertByKey
Realiza upsert com base na chave composta do trabalho. Se uma das chaves estiver ausente, a entidade é tratada como inserção.
Excluir entidade e remover backup
backup을 활성화하면 <sourceCollection>_remove collection을 사용합니다. delete와 backup을 하나의 원자 작업으로 묶어야 한다면 호출 측에서 getTxJob(...) transaction 범위를 잡습니다.
Instantâneo do histórico
createHistory는 현재 MongoExecutionContext.write(...) 결과를 deep copy하고 _id를 제거한 뒤 <sourceCollection>_history 또는 지정한 prefix collection에 insert합니다. history write도 save lifecycle hook을 호출하지 않습니다.