كيف تقرر كيف فئات الكيان لوضع التعليقات التوضيحية JPA NamedQuery؟
-
18-09-2019 - |
سؤال
أقول لدي عميل - علاقات ثنائية الاتجاه المرسلة من سنة واحدة مع نظام تشغيل Customer الذي يحمل القيمة الإجمالية لكل طلب.
إذا كان لدي استعلام للعثور على القيمة الإجمالية لجميع الطلبات لعملاء معين:
select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer
هل يهم في أي فئة كيكة يتم الإعلان عن هذا؟ لماذا تضعها في واحد أو آخر؟
المحلول
هل يهم في أي فئة كيكة يتم الإعلان عن هذا؟
من وجهة نظر فنية، لا يهم كما ستستخدم name
من أ @NamedQuery
للاتصال بها.
لماذا تضعها في واحد أو آخر؟
ولكن، من وجهة نظر "منطقية"، وضع @NamedQuery
حيث "بطبيعة الحال" ينتمي بالتأكيد الصيانة. في مثالك، أود أن أضع الاستعلام في CustomerOrder
كيان لأن الاستعلام يكون حول النتيجة CustomerOrder
, هذا هو المكان الذي أتوقع فيه العثور عليه إذا اضطررت إلى البحث عنه.
نصائح أخرى
لا يهم. المبدأ العام هو وضعه حيث ينتمي منطقيا. في حالتك - سيكون من الأفضل CustomerOrder
ضعها في ملفات تعيين XML التي يجب الإعلان عنها في persistence.xml. انظر هذا الرابط العظيم: Arjan-tijms.omnifaces.org/09/where-to-put-lyties-in-jpa.
لا تنتمي الكثير من الاستعلامات "بشكل طبيعي" مع الكيان (وعلا يتعين عليك تعديل رمز الكيكة، إذا وضعتها هناك، في كل مرة تحتاج فيها إلى استعلام جديد).