เหตุผลที่ Hibernate ให้วิธีการคงที่ () ที่เกือบจะคล้ายกับฟังก์ชั่นบันทึก () คือการดูแลพฤติกรรมการใช้งาน JPA ในทางกลับกันมีความแตกต่างอีกอย่างหนึ่งระหว่างวิธีการบันทึก () และคงที่ (): เมื่อใช้วิธีการบันทึก () เพื่อบันทึกวัตถุถาวรวิธีการส่งคืนค่าแอตทริบิวต์ตัวระบุของวัตถุถาวร (นั่นคือค่าคีย์หลักที่สอดคล้องกับบันทึก); แต่เมื่อใช้เมธอดคงที่ () เพื่อบันทึกวัตถุถาวรวิธีการไม่มีค่าส่งคืนใด ๆ เนื่องจากวิธีการบันทึก () จำเป็นต้องส่งคืนแอตทริบิวต์ตัวตนของวัตถุถาวรทันทีการดำเนินการของโปรแกรมบันทึก () จะแทรกข้อมูลที่สอดคล้องกับวัตถุถาวรลงในฐานข้อมูลทันที ในขณะที่คงอยู่ () รับรองว่าเมื่อมีการเรียกออกไปข้างนอกของมันมันจะไม่ถูกแปลงเป็นคำสั่งแทรกทันที ฟังก์ชั่นนี้มีประโยชน์มากโดยเฉพาะอย่างยิ่งเมื่อเราห่อหุ้มกระบวนการเซสชันที่ยาวนานวิธีการคงที่ () มีความสำคัญอย่างยิ่ง
มีความแตกต่างที่ชัดเจนที่นี่ (คุณสามารถติดตาม SRC เพื่อดูได้แม้ว่าขั้นตอนการใช้งานจะคล้ายกัน แต่ก็ยังมีความแตกต่างเล็กน้อย)
ความแตกต่างของเนื้อหาหลัก:
1. ยังคงมีอินสแตนซ์ชั่วคราว แต่ไม่รับประกันว่าตัวระบุ (แอตทริบิวต์ที่สอดคล้องกับคีย์หลักของตัวระบุ) จะถูกกรอกในอินสแตนซ์ถาวรทันทีและการกรอกข้อมูลในตัวระบุอาจล่าช้าจนกว่าจะล้าง
2. บันทึกยังคงมีตัวระบุสำหรับอินสแตนซ์ชั่วคราวและสร้างมันในเวลา จำเป็นต้องส่งคืนตัวระบุดังนั้นมันจะดำเนินการ SQL Insert ทันที
คำอธิบายของชาวเน็ตอื่น ๆ :
บันทึกวิธีการ
เมื่อบันทึกวัตถุที่คงอยู่วิธีนี้จะส่งคืนค่าแอตทริบิวต์ตัวระบุ (เช่นคีย์หลัก) ของวัตถุที่คงอยู่
วิธีนี้จะแทรกข้อมูลที่สอดคล้องกันของวัตถุถาวรลงในฐานข้อมูลทันที
วิธีการคงอยู่
วิธีนี้ไม่ส่งคืนค่า
ตรวจสอบให้แน่ใจว่าเมื่อมีการเรียกนอกการทำธุรกรรมมันจะไม่ถูกแปลงเป็นคำสั่งแทรกทันที
เหมาะสำหรับการไหลของเซสชั่นที่ยาวนาน