แอปพลิเคชันที่สอดคล้องกับ JDBC ควรเก็บคำสั่ง SQL ไว้ที่ใดและเพราะเหตุใด
จนถึงตอนนี้ฉันสามารถระบุตัวเลือกเหล่านี้ได้:
- ฮาร์ดโค้ดในวัตถุทางธุรกิจ
- ฝังอยู่ในส่วนคำสั่งSQLJ
- ห่อหุ้มในคลาสที่แยกจากกันเช่น Data Access Objects
- ข้อมูลเมตาขับเคลื่อน (แยกสคีมาออบเจ็กต์ออกจากสคีมาข้อมูล - อธิบายการแมประหว่างพวกเขาในข้อมูลเมตา)
- ไฟล์ภายนอก (เช่นคุณสมบัติหรือไฟล์ทรัพยากร)
- กระบวนงานที่จัดเก็บ
“ ข้อดี” และ“ ข้อเสีย” ของแต่ละข้อมีอะไรบ้าง?
ควรพิจารณาโค้ด SQL เป็น“ code” หรือ“ metadata”?
ควรใช้กระบวนงานที่จัดเก็บไว้เพื่อเพิ่มประสิทธิภาพการทำงานเท่านั้นหรือเป็นนามธรรมที่ถูกต้องตามกฎหมายของโครงสร้างฐานข้อมูล?
ประสิทธิภาพเป็นปัจจัยสำคัญในการตัดสินใจหรือไม่? แล้วผู้ขายล็อคอินล่ะ?
อะไรจะดีไปกว่ากัน - ข้อต่อหลวมหรือข้อต่อแน่นและทำไม?
แก้ไข: ขอบคุณทุกคนสำหรับคำตอบ - นี่คือบทสรุป:
เมทาดาทาขับเคลื่อนเช่น Object Relational Mappings (ORM)
ข้อดี:
- นามธรรมมาก - เซิร์ฟเวอร์ DB สามารถเปลี่ยนได้โดยไม่จำเป็นต้องเปลี่ยนโมเดล
- การแพร่กระจายกว้าง - เป็นมาตรฐาน
- ลดจำนวน SQL ที่จำเป็น
- สามารถจัดเก็บ SQL ในไฟล์ทรัพยากร
- ประสิทธิภาพ (โดยปกติ) เป็นที่ยอมรับ
- แนวทางที่ขับเคลื่อนด้วยข้อมูลเมตา
- (ฐานข้อมูล) ความเป็นอิสระของผู้ขาย
จุดด้อย:
- ซ่อน SQL และความตั้งใจจริงของนักพัฒนา
- DBA ตรวจสอบ / เปลี่ยนแปลง SQL ได้ยาก
- SQL อาจจำเป็นสำหรับกรณีแปลก ๆ
- สามารถบังคับใช้ภาษาแบบสอบถามที่เป็นกรรมสิทธิ์เช่น HQL
- ไม่ยืมตัวไปสู่การเพิ่มประสิทธิภาพ (นามธรรม)
- สามารถขาดความสมบูรณ์อ้างอิง
- ทดแทนการขาดความรู้ SQL หรือขาดความใส่ใจในการเขียนโค้ดใน DB
- ไม่ตรงกับประสิทธิภาพของฐานข้อมูลดั้งเดิม (แม้ว่าจะเข้ามาใกล้ก็ตาม)
- รหัสรุ่นแน่นมากควบคู่ไปกับโมเดลฐานข้อมูล
ฮาร์ดโค้ด / เข้ารหัสในเลเยอร์ DAO
ข้อดี:
- SQL ถูกเก็บไว้ในวัตถุที่เข้าถึงข้อมูล (การห่อหุ้ม)
- SQL เขียนง่าย (ความเร็วในการพัฒนา)
- SQL นั้นง่ายต่อการติดตามเมื่อจำเป็นต้องมีการเปลี่ยนแปลง
- วิธีแก้ปัญหาง่ายๆ (ไม่มีสถาปัตยกรรมที่ยุ่งเหยิง)
จุดด้อย:
- DBA ไม่สามารถตรวจสอบ / เปลี่ยนแปลง SQL ได้
- SQL มีแนวโน้มที่จะกลายเป็นเฉพาะฐานข้อมูล
- SQL อาจเป็นเรื่องยากที่จะดูแลรักษา
กระบวนงานที่จัดเก็บ
ข้อดี:
- SQL เก็บไว้ในฐานข้อมูล (ใกล้เคียงกับข้อมูล)
- SQL ถูกแยกวิเคราะห์รวบรวมและปรับให้เหมาะสมโดย DBMS
- SQL เป็นเรื่องง่ายสำหรับ DBA ในการตรวจสอบ / เปลี่ยนแปลง
- ลดปริมาณการใช้งานเครือข่าย
- เพิ่มความปลอดภัย
จุดด้อย:
- SQL เชื่อมโยงกับฐานข้อมูล (ล็อกผู้ขาย)
- รหัส SQL รักษายากกว่า
ไฟล์ภายนอก (เช่นคุณสมบัติหรือไฟล์ทรัพยากร)
ข้อดี
- SQL สามารถเปลี่ยนแปลงได้โดยไม่จำเป็นต้องสร้างแอปพลิเคชันใหม่
- แยกตรรกะ SQL ออกจากตรรกะทางธุรกิจของแอปพลิเคชัน
- ที่เก็บกลางของคำสั่ง SQL ทั้งหมด - ดูแลรักษาง่ายกว่า
- เข้าใจง่ายขึ้น
จุดด้อย:
- โค้ด SQL อาจไม่สามารถบำรุงรักษาได้
- ตรวจสอบโค้ด SQL เพื่อหาข้อผิดพลาด (ไวยากรณ์) ได้ยากขึ้น
ฝังอยู่ในส่วนคำสั่ง SQLJ
ข้อดี:
- การตรวจสอบไวยากรณ์ที่ดีขึ้น
จุดด้อย:
- ผูกติดกับ Java มากเกินไป
- ประสิทธิภาพต่ำกว่า JDBC
- ขาดการสืบค้นแบบไดนามิก
- ไม่ค่อยเป็นที่นิยม