Hibernate, @SequenceGenerator และการจัดสรรขนาด
เราทุกคนรู้ถึงพฤติกรรมเริ่มต้นของ Hibernate เมื่อใช้@SequenceGenerator- มันจะเพิ่มลำดับฐานข้อมูลจริงทีละค่านี้คูณด้วย 50 (ค่าเริ่มต้นallocationSize) - จากนั้นใช้ค่านี้เป็น ID เอนทิตี นี่เป็นพฤติกรรมที่ไม่ถูกต้องและขัดแย้งกับข้อกำหนดที่ระบุว่า: จัดสรรขนาด - (ไม่บังคับ) จำนวนเงินที่จะเพิ่มขึ้นเมื่อจัดสรรหมายเลขลำดับจากลำดับ เพื่อความชัดเจน: ฉันไม่กังวลเกี่ยวกับช่องว่างระหว่าง ID ที่สร้างขึ้น ฉันสนใจ ID ที่ไม่สอดคล้องกับลำดับฐานข้อมูลพื้นฐาน ตัวอย่างเช่น: แอปพลิเคชันอื่น ๆ (เช่นใช้ JDBC ธรรมดา) อาจต้องการแทรกแถวใหม่ภายใต้ ID ที่ได้รับจากลำดับ - แต่ค่าเหล่านั้นทั้งหมดอาจถูกใช้โดย Hibernate! ความบ้าคลั่ง มีใครทราบวิธีแก้ปัญหานี้allocationSize=1บ้างไหม(โดยไม่ต้องตั้งค่าและทำให้ประสิทธิภาพลดลง) แก้ไข: เพื่อให้ทุกอย่างชัดเจน ถ้าระเบียนสุดท้ายแทรกมี ID = 1ค่าใช้แล้ว HB 51, 52, 53...สำหรับองค์กรใหม่ แต่ในเวลาเดียวกัน: 2ค่าลำดับในฐานข้อมูลของจะถูกตั้งค่า ซึ่งสามารถนำไปสู่ข้อผิดพลาดได้อย่างง่ายดายเมื่อแอปพลิเคชันอื่นกำลังใช้ลำดับนั้น ในทางกลับกัน: …