ไม่แน่ใจถ้าฉันเข้าใจ TransactionAwarePersistenceManagerFactoryProxy


192

ฉันกำลังพยายามใช้org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxyในโครงการ Spring ของฉัน แต่ฉันไม่แน่ใจว่าจะใช้งานอย่างไรหรือว่าเป็นสิ่งที่ฉันกำลังมองหาหรือไม่ ฉันรู้ว่ามันสามารถช่วยให้ DAO ของฉันทำงานกับ JDO ธรรมดาPersistenceManagerFactoryได้ คำถามอื่นคือ: จะเกิดอะไรขึ้นถ้าพร็อกซีไม่ได้รับการทำอย่างถูกต้อง? ฉันยังคงสามารถใช้มันเพื่อเข้าถึงโรงงานของฉันเพื่อสร้างผู้จัดการการคงอยู่ที่รับรู้ธุรกรรม หากวัตถุที่จัดการโดยโรงงานเป็นซิงเกิลตันสิ่งนี้จะเปลี่ยนแปลงหรือไม่? ทำไมไม่เพียงแค่เข้าสู่ PersistenceManagerFactory โดยตรง? บางทีอาจPersistenceManagerFactoryUtils.getPersistenceManagerจะเหมาะกับความต้องการของฉันมากกว่านี้? สามารถgetObjectคืนค่าว่างได้หรือไม่


193
ฮ่า ๆ! ขออภัยฉันอดไม่ได้ที่จะเกือบร้องไห้เมื่อเห็นชื่อวัตถุ
Eric des Courtis

133
และนี่คือเด็ก ๆ ที่รักนั่นคือเหตุผลที่ Java ควรหยุดใช้ยา
Griwes

48
คุณรู้ว่าคุณอยู่ในโลกของ Java นานเกินไปเมื่อชื่ออย่างนี้ไม่ดูเหมือนไม่มีเหตุผล ... !
Brian

27
ผู้ชาย เฮ้พวกคุณฟัง คุณกำลังทำผิดพลาดมือใหม่อีกครั้ง Spring Framework ไม่ใช่ Java และ Java ไม่ใช่ Spring Framework อย่าสับสนพวกเขา
Torben

49
เกี่ยวกับคำถามเดิม: นี่คือการหมุนรอบที่มีคุณภาพสูงที่ฉันสามารถชื่นชมอย่างแท้จริง
Torben

คำตอบ:


20

คำตอบมีอยู่ในเอกสารโดยตรง

ฉันรู้ว่าสามารถช่วยให้ DAO ของฉันทำงานกับ JDO PersistenceManagerFactory ธรรมดาได้

ใช่. TransactionAwarePersistenceManagerFactoryProxy proxy ช่วยให้ DAO ทำงานกับการอ้างอิง JDO PersistenceManagerFactory ธรรมดาในขณะที่ยังคงมีส่วนร่วมในการจัดการทรัพยากรและธุรกรรมของ Spring (หรือเซิร์ฟเวอร์ J2EE) ของ Spring คุณสามารถใช้ในแอพของคุณได้อย่างแน่นอน แต่หากไม่ทราบความต้องการที่แท้จริงของคุณเราไม่สามารถยืนยันได้อีก

ฉันยังสามารถใช้เพื่อเข้าถึงโรงงานของฉันเพื่อสร้างตัวจัดการการคงอยู่ที่รับรู้ถึงธุรกรรมได้หรือไม่

DAOs สามารถสลับระหว่าง JNDI PersistenceManagerFactory และพร็อกซีนี้สำหรับ Local PersistenceManagerFactory ได้อย่างราบรื่น

หากวัตถุที่จัดการโดยโรงงานเป็นซิงเกิลตันสิ่งนี้จะเปลี่ยนแปลงหรือไม่? ทำไมไม่เพียงแค่เข้าสู่ PersistenceManagerFactory โดยตรง?

โดยทั่วไปแล้วควรเขียน DAO ที่อิง JDO ของคุณด้วย JdoTemplate ของ Spring ซึ่งให้ประโยชน์เช่นการยกเว้นการเข้าถึงข้อมูลที่สอดคล้องกันแทนที่จะเป็น JDOExceptions ที่เลเยอร์ DAO อย่างไรก็ตามการจัดการทรัพยากรและธุรกรรมของสปริง (และการพึ่งพาการฉีด) จะทำงานสำหรับ DAO ที่เขียนกับ JDO API แบบธรรมดาเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.