Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง Save และ SaveAndFlush ใน Spring Data JPA

ทั้ง save() และ saveAndFlush() ใช้สำหรับบันทึก entity ทั้งคู่อยู่ใน Spring Data library save() อาจจะหรืออาจไม่เขียนการเปลี่ยนแปลงไปยังฐานข้อมูลทันที ขึ้นอยู่กับการจัดการ transaction ในขณะที่ saveAndFlush() บังคับให้เกิดการซิงโครไนซ์สถานะโมเดลกับฐานข้อมูลทันที

ตารางเปรียบเทียบรายละเอียด

ลำดับ หัวข้อ save() saveAndFlush()
1 Repository อยู่ใน CrudRepository อยู่ใน JpaRepository
2 กลยุทธ์การ Flush ไม่ flush ข้อมูลไปยัง DB โดยตรง จนกว่าจะเรียก flush() และ commit() อย่างชัดเจน flush ข้อมูลไปยัง DB โดยตรงทันที
3 Bulk Save CrudRepository มีเมธอด bulk save saveAndFlush() ไม่รองรับ bulk operation
4 การมองเห็นข้อมูลหลังบันทึก ไม่ flush โดยตรง การเปลี่ยนแปลงไม่มองเห็นนอก transaction เว้นแต่จะเรียก commit() การเปลี่ยนแปลงมองเห็นได้นอก transaction ด้วย
5 กรณีการใช้งาน (Use Case) ใช้เมื่อไม่ต้องใช้ข้อมูลที่บันทึกในภายหลังใน transaction เดียวกัน ใช้เมื่อต้องใช้ข้อมูลที่บันทึกในภายหลังใน transaction เดียวกัน

สรุป

save() เหมาะสำหรับการบันทึกทั่วไปที่ไม่ต้องการข้อมูลทันที ประหยัดประสิทธิภาพด้วยการ batch processing ในขณะที่ saveAndFlush() จำเป็นเมื่อต้องการข้อมูลที่เพิ่งบันทึกทันที เช่น เพื่อดึง ID ที่ generate จาก database หรือทำงานต่อใน transaction เดียวกัน