سؤال

سؤالي هو عند استخدام نمط المواصفات، وعند استخدام استعلام SQL محدد.

فهمت أن نمط محدد تحتاج إلى جمع التجميع بالكامل ونشر مرشح باستخدام مواصفات ملموسة. لكنني لا أفهم ميزة أمام استعلام SQL محدد.

CarColorSpecification cc = new CarColorSpecification(RED);
CarAgeSpecification ca = new CarAgeSpecification(OLDER, 5);

ISpecification finalSpec = cc.And(ca);

List<Car> res;
List<Car> carColl = service.getCars();
foreach(Car c in carColl) {
  if(finalSpec.isSatisfiedBy(c)) {
    res.add(c);
  }
}

ونفس الشيء في SQL / السبات

FROM Car c WHERE c.color = RED AND c.age > 5

أعتقد أنه يعتمد على حجم البيانات لمعالجة.

هل كانت مفيدة؟

المحلول

ال مخزن يستخدم لإجراء مجردة تنفيذ الثبات بعيدا عن فئات النطاقات الخاصة بك. باختصار، يجب أن توجد SQL / HQL فقط داخل مستودعاتك.

إذا كنت تتعامل مع أحجام البيانات عالية، فقم بإنشاء طريقة جديدة على مخزن واتصل بهذه الطريقة من تخصيص.

نصائح أخرى

سيتم تشغيل إصدار SQL بسرعة شريطة أن يتم فهرسة الجدول بشكل مناسب للأعمدة المعنية بحجمه وحجمه، وسيتم نقل حجم أصغر من البيانات بين خادم DB وخادم التطبيق إذا كانت مختلفة. ومع ذلك، قد يفرض حمولة أعلى على مربع SQL من حيث وحدة المعالجة المركزية واستخدام I / O القرص، وفي العديد من البيئات، خادم DB هو أغلى مكون في الحجم.

نعم، هذا يعتمد على قدر كبير على حجم البيانات.

أعتقد أن هناك حل وسط جيد سيكون هو الجمع بين نمط المواصفات وفقا لسبات لتوليد استفسارات HQL. (ربما Linq ل Java ^^؟)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top