วิริยะใน Java
ในช่วงหลายปีที่ผ่านมาฉันได้รวบรวมประสบการณ์ในด้านการคงอยู่ของนามธรรมใน Java โดยใช้แนวคิดเช่น EJB 2.0, Hibernate, JPA และที่ปลูกในบ้าน พวกเขาดูเหมือนว่าฉันจะมีโค้งการเรียนรู้ที่สูงชันและความซับซ้อน นอกจากนี้ในฐานะที่เป็นแฟนตัวยงของ SQL ฉันคิดว่าตัวแบบนามธรรมจำนวนมากให้นามธรรมที่เป็นนามธรรมมากกว่า SQL สร้างแนวคิดเช่น "เกณฑ์", "เพรดิเคต", "ข้อ จำกัด " ที่เป็นแนวคิดที่ดีมาก แต่ไม่ใช่ SQL
แนวคิดทั่วไปของการคงอยู่ที่เป็นนามธรรมใน Java ดูเหมือนจะเป็นไปตามแบบจำลองเชิงวัตถุสัมพันธ์ที่ RDBMS จะตรงกับโลก OO การถกเถียงกันเรื่อง ORM นั้นเป็นเรื่องทางอารมณ์มาโดยตลอดเพราะดูเหมือนว่าจะไม่มีทางแก้ปัญหาเดียวที่เหมาะกับทุกคน
jOOQ
ความชอบส่วนตัวของฉันในการหลีกเลี่ยงปัญหาที่เกี่ยวกับออมคือการยึดติดกับโลกสัมพันธ์ ตอนนี้การเลือกกระบวนทัศน์ของตัวแบบข้อมูลไม่ควรเป็นหัวข้อของการอภิปรายเนื่องจากเป็นความชอบส่วนตัวหรือเรื่องของแบบจำลองข้อมูลที่เหมาะสมกับปัญหาที่เป็นรูปธรรม การอภิปรายผมอยากจะเริ่มต้นอยู่ที่ประมาณเครื่องมือติดตาของตัวเองมากที่เรียกว่าjOOQ ฉันออกแบบ jOOQ เพื่อให้ข้อดีส่วนใหญ่ของเครื่องมือการคงอยู่ที่ทันสมัยมี:
- ภาษาเฉพาะโดเมนขึ้นอยู่กับ SQL
- การสร้างซอร์สโค้ดการแม็พสกีมาฐานข้อมูลพื้นฐานกับ Java
- รองรับ RDBMS มากมาย
การเพิ่มคุณสมบัติบางอย่างที่มีอยู่ไม่กี่เครื่องมือที่มีอยู่ (แก้ไขให้ฉันถ้าฉันผิด):
- การสนับสนุน SQL ที่ซับซ้อน - สหภาพ, การเลือกแบบซ้อน, การรวมตัวเอง, นามแฝง, กรณีข้อ, นิพจน์ทางคณิตศาสตร์
- สนับสนุน SQL ที่ไม่ได้มาตรฐาน - โพรซีเดอร์ที่เก็บไว้, UDT, ENUMS, ฟังก์ชันเนทิฟ, ฟังก์ชันวิเคราะห์
โปรดพิจารณาหน้าเอกสารเพื่อดูรายละเอียดเพิ่มเติมได้ที่: http://www.jooq.org/learn.php คุณจะเห็นว่ามีการใช้วิธีที่คล้ายกันมากใน Linq สำหรับ C # แม้ว่า Linq ไม่ได้ออกแบบมาเฉพาะสำหรับ SQL
คำถาม
ตอนนี้ต้องบอกว่าฉันเป็นแฟนตัวยงของ SQL ฉันสงสัยว่านักพัฒนารายอื่นจะแบ่งปันความกระตือรือร้นของฉันกับ jOOQ (หรือ Linq) หรือไม่ วิธีการแบบนี้ในการคงอยู่สิ่งที่เป็นนามธรรมหรือไม่? อะไรคือข้อดี / ข้อเสียที่คุณอาจเห็น? ฉันจะปรับปรุง jOOQ ได้อย่างไรและความคิดเห็นของคุณขาดหายไปอย่างไร ฉันไปผิดทางแนวความคิดหรือทางปฏิบัติที่ไหน
ชื่นชมคำตอบที่สำคัญ แต่สร้างสรรค์
ฉันเข้าใจว่าการถกเถียงเป็นเรื่องทางอารมณ์ มีเครื่องมือที่ยอดเยี่ยมมากมายที่ทำสิ่งที่คล้ายกันอยู่แล้ว สิ่งที่ฉันสนใจเป็นสิ่งสำคัญ แต่เป็นข้อเสนอแนะที่สร้างสรรค์ขึ้นอยู่กับประสบการณ์ของคุณเองหรือบทความที่คุณอาจอ่าน