จะทำให้เอนทิตี JPA คงอยู่ / ลบออก แต่ไม่ได้ผูกมัดได้อย่างไร

ฉันมีตารางหลักลูก ผู้ใช้สามารถเพิ่ม/ลบรายการย่อยได้หลังจากเลือกรายการหลัก/เอนทิตี เมื่อดัชนีการเลือกรายการหลักเปลี่ยนแปลง ฉันจะกรอกตารางลูก/รายการอาร์เรย์ด้วยรายการลูกของรายการหลักที่เลือกนี้จากฐานข้อมูล ฉันเปิดตัวจัดการเอนทิตี เริ่มธุรกรรม คงอยู่หรือลบเอนทิตี/รายการย่อยเมื่อผู้ใช้คลิกปุ่มเพิ่ม/ลบรายการย่อยตามลำดับ ปัญหาของฉันคือการติดตามเอนทิตีย่อยใหม่และที่ถูกลบ ในขณะที่ผู้ใช้เลือกรายการหลักอื่น เนื่องจากฉันกำลังล้างตารางลูก/รายการอาร์เรย์ (แต่ไม่ได้ล้างบริบทการคงอยู่) ก่อนที่จะเติมเอนทิตีลูกของรายการหลักที่เลือกใหม่ ฉันต้องการสะท้อนถึงรายการย่อยใหม่/ที่ถูกลบออก ยังไม่ได้คอมมิตเมื่อผู้ใช้เลือกรายการหลักก่อนหน้าอีกครั้ง โฮปอธิบายปัญหาของฉันอย่างถูกต้อง การใช้ไฮเบอร์เนตผ่าน JPA ขอบคุณ.


person Uluk Biy    schedule 13.01.2012    source แหล่งที่มา


คำตอบ (2)


เพียงดำเนินการค้นหาเพื่อรับลูกทั้งหมดของต้นแบบที่เลือก แม้ว่าธุรกรรมจะยังไม่ถูกผูกมัด แต่ธุรกรรมจะเห็นธุรกรรมเหล่านั้นในฐานข้อมูลเนื่องจากได้บันทึกไว้แล้ว

อย่างไรก็ตาม โปรดทราบว่าการใช้ธุรกรรมที่ยาวนั้นไม่สามารถปรับขนาดได้ และจะนำไปสู่ปัญหาการล็อคและความล้าสมัยทุกประเภท ทำไมคุณไม่บันทึกลูกและคอมมิตทุกครั้งที่ผู้ใช้เพิ่มหรือลบลูก?

person JB Nizet    schedule 13.01.2012
comment
ฉันก็คาดหวังให้เป็นอย่างนั้นเช่นกัน แปลก. เมื่อวานมันไม่เป็นไปตามที่คาดไว้ แต่วันนี้กลับเป็นอย่างนั้น ขอบคุณนะ โปรเจ็กต์ที่ฉันกำลังทำอยู่คือโปรแกรม javaFX และจะทำงานบนเดสก์ท็อปโดยมีผู้ใช้เพียงไม่กี่คนเท่านั้น นั่นคือเหตุผลที่ทำให้การทำธุรกรรมยาวนาน - person Uluk Biy; 13.01.2012

ฉันไม่อยากให้ธุรกรรมเปิดอยู่ระหว่างการคลิกของผู้ใช้ เขาสามารถไปพักดื่มกาแฟแล้วทิ้งมันไป ฉันควรใช้ตารางชั่วคราว เซสชัน แคช อินพุตที่ซ่อนอยู่ (หากเป็นส่วนหน้าของเว็บ) เป็นต้น

person Piotr Gwiazda    schedule 13.01.2012
comment
คุณช่วยอธิบายและให้ลิงก์เกี่ยวกับเซสชันและแคชได้ไหม คุณกำลังพูดถึงสิ่งเหล่านี้ในบริบทของ jpa หรือไม่? ไม่มีเว็บเซิร์ฟเวอร์หรือเว็บแอปพลิเคชัน พูลการเชื่อมต่อ และส่วนหน้าของเว็บในโปรเจ็กต์ของฉัน - person Uluk Biy; 13.01.2012