คำถามติดแท็ก jpa

5
การพักอาศัยการดำเนินการไม่เชื่อเรื่องพระเจ้าคุ้มค่าหรือไม่
ฉันมีโครงการที่ฉันกำลังใช้งานอยู่ในปัจจุบันโดยใช้ Tomcat, Spring 4, Spring Security, MySQL, และ JPA w / Hibernate ฉันเลือก JPA จากมุมมองที่ว่าควรทำการสลับการใช้งานพื้นฐานของผู้ให้บริการ ORM อย่างราบรื่นหรืออย่างน้อยก็เจ็บปวดน้อย ฉันจะบอกว่านี่คือการใช้จิตใจ spec มากกว่าการใช้งาน (JAX-RS) เป็นจุดเริ่มต้นของชุมชนการพัฒนา Java ฉันสงสัยว่านี่เป็นงานที่ควรทำ ฉันแน่ใจว่าฉันใช้ Hibernate โดยตรงฉันจะได้รับพลังงานเพราะฉันสามารถใช้คุณสมบัติที่ไม่ได้เป็นส่วนหนึ่งของข้อกำหนด JPA หลัก ส่วนหนึ่งของความกังวลของฉันมาจากความคิดของ YAGNI ฉันกำลังเขียนโปรแกรมในรูปแบบและแฟชั่นที่เฉพาะเจาะจง (โดยใช้ JPA แทน Hibernate) เพื่อที่ในอนาคตฉันสามารถสลับการใช้งาน ORM ของฉันได้ ฉันสงสัยอย่างมากว่าจะเกิดขึ้นตลอดอายุการใช้งานของผลิตภัณฑ์ดังนั้นฉันจึงใช้ความพยายามในสิ่งที่ฉันอาจไม่ได้รับประโยชน์จาก คุณคิดยังไง? "การเขียนโปรแกรมไปยังอินเทอร์เฟซ" นั้นคุ้มค่าหรือไม่เมื่อพูดถึง JPA คุณเคยเปลี่ยนการใช้งาน ORM ทั้งหมดในผลิตภัณฑ์หรือไม่? คุณเคยสามารถหลีกเลี่ยงสิ่งที่เป็นนามธรรมจาก JPA ที่รั่วไหลไปได้หรือไม่? …

4
ฉันจะใช้การทดสอบหน่วยและ TDD เพื่อทดสอบแอพที่ขึ้นอยู่กับการดำเนินการ CRUD ของฐานข้อมูลเป็นส่วนใหญ่ได้อย่างไร
ที่ทำงานหนึ่งในโครงการของฉันส่วนใหญ่เกี่ยวกับการรับส่งข้อมูลจากไคลเอนต์ภายนอกและเก็บไว้ในฐานข้อมูล มันเป็นแอพพลิเคชั่นขององค์กร Java ที่ใช้ JPA และตรรกะส่วนใหญ่ของเราหมุนรอบการดำเนินการ CRUD ข้อบกพร่องส่วนใหญ่ของเราเกี่ยวข้องกับ JPA ไม่ทางใดก็ทางหนึ่ง ตัวอย่างที่ 1: ถ้าคุณคลิกปุ่มบันทึกสองครั้ง JPA อาจลองแทรกเอนทิตีเดียวกันในฐานข้อมูลเป็นครั้งที่สองทำให้เกิดการละเมิดคีย์หลัก ตัวอย่างที่ 2: คุณดึงเอนทิตีจากฐานข้อมูลแก้ไขและลองอัปเดตข้อมูล JPA อาจพยายามสร้างอินสแตนซ์ใหม่แทนการอัปเดตเก่า บ่อยครั้งที่โซลูชันต้องการเพิ่ม / ลบ / เปลี่ยนคำอธิบายประกอบ JPA บางครั้งก็เกี่ยวข้องกับการปรับเปลี่ยนตรรกะ DAO ฉันไม่สามารถหาวิธีที่จะมั่นใจในโค้ดของเราโดยใช้การทดสอบหน่วยและ TDD ฉันไม่แน่ใจว่าเป็นเพราะการทดสอบหน่วยและ TDD นั้นไม่เหมาะสมหรือถ้าฉันเข้าใกล้ปัญหาผิด การทดสอบหน่วยดูเหมือนจะไม่เหมาะสมเพราะฉันสามารถค้นพบปัญหาเหล่านี้ที่รันไทม์เท่านั้นและฉันจำเป็นต้องปรับใช้กับเซิร์ฟเวอร์แอปเพื่อสร้างปัญหาขึ้นมาใหม่ โดยปกติฐานข้อมูลจะต้องเกี่ยวข้องซึ่งฉันคิดว่าอยู่นอกนิยามของการทดสอบหน่วย: นี่คือการทดสอบการรวม TDD ดูเหมือนว่าไม่เหมาะสมเพราะการปรับใช้ + ข้อเสนอแนะการทดสอบช้ามากทำให้ฉันไม่ได้ผลมาก การปรับใช้ + ข้อเสนอแนะการทดสอบวนใช้เวลา 3 นาทีและนั่นก็ต่อเมื่อฉันรันการทดสอบเฉพาะเกี่ยวกับรหัสที่ฉันเขียน ในการรันการทดสอบการรวมระบบทั้งหมดจะใช้เวลา 30+ นาที มีรหัสอยู่นอกแม่พิมพ์นี้และฉันมักจะทดสอบหน่วยทุกครั้งที่ทำได้ แต่ข้อบกพร่องส่วนใหญ่ของเราและช่วงเวลาที่ยิ่งใหญ่ที่สุดมักเกี่ยวข้องกับ …
22 java  unit-testing  tdd  jpa 

2
เอนทิตีเพื่อการใช้งาน DTO
รับความพยายามในการสร้างเว็บแอพพลิเคชั่นระดับพื้นฐานและได้อ่านข้อมูลที่ขัดแย้งกันทางออนไลน์ สิ่งที่ฉันพยายามคิดก็คือหากมีข้อได้เปรียบในการใช้วัตถุ DTO จาก DAO to เลเยอร์บริการของคุณผ่านการใช้ mapper บางประเภท โฟลว์พื้นฐานที่ฉันคาดการณ์ไว้มีดังนี้: UI Model / Form -> Controller คอนโทรลเลอร์แปลง Model เป็น Domain Object (Entity) วัตถุโดเมน -> ชั้นบริการ วัตถุโดเมน -> DAO DAO -> วัตถุโดเมน บริการ -> UI UI แปลงโดเมนเป็นโมเดล UI ถ้า DTO ถูกติดตาม DAO จะส่งกลับ DTO ไม่ใช่เอนทิตี หลังจากอ่านบางอย่างดูเหมือนว่า DTO ได้หมดอายุลงเล็กน้อยเนื่องจาก (อย่างน้อยใน Java) เอนทิตีได้กลายเป็นหมายเหตุประกอบ …
15 java  entity  jpa 

1
IntelliJ พร้อมการรวบรวม Maven
ฉันมีโครงการที่ต้องการขวดไฮเบอร์เนต ฉันเพิ่มพวกเขาเป็นการพึ่งพาใน pom.xml และ Maven รวบรวมโครงการของฉันได้ดี อย่างไรก็ตามใน IDE นั้นคำอธิบายประกอบและการโทรถึง Hibernate API ทั้งหมดจะถูกทำเครื่องหมายว่าไม่ได้รับการแก้ไข (สีแดง) ฉันจะทำให้ IntelliJ สามารถแก้ไขได้อย่างไร มีวิธีการใช้ Maven เมื่อฉันคลิกที่สร้างโครงการหรือไม่ (Ctrl + F9) นอกจากนี้ฉันสับสนกับแนวคิดของ facets ภายใน IntelliJ ฉันต้องการมันหรือเปล่าสมมุติว่า JPA facets เปิดใช้งาน Persistence Assistant ฯลฯ ... หรือมีตัวเลือกให้ Maven ดูแล?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.