سؤال

أنا أستخدم Datanucleus كتطبيق JPA لتخزين فصولي في تطبيق الويب الخاص بي. أستخدم مجموعة من المحولات التي لديها جميعها toDTO() و fromDTO().

مشكلتي هي أنني أريد تجنب إرسال ديسيبل كامل عبر السلك:

  • إذا كنت كسولًا ، فسيحاول المحول الوصول إلى جميع الحقول ، وتحميلها (مما يؤدي إلى تحميل شغوف للغاية).
  • إذا لم أحمل كسول ، فسوف أحصل على جزء كبير من DB ، نظرًا لأن المستخدم يحتوي على مجموعات ، والمجموعات تحتوي على مستخدمين ، وما إلى ذلك.

هل هناك طريقة لتحميل بعض الحقول بشكل صريح وترك الآخرين كخلفي في صفي المحملة؟ لقد جربت مستندات Datanucleus دون حظ.

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

المحلول

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

في الآونة الأخيرة ، كان لدينا كل "إلى dto أو عدم DTO ، وهذا هو السؤال" مرة أخرى. غالبًا ما لم يعد هناك متطلباتهم (خاصة في سياق تطبيق JPA) ، ولكن إحدى الحجج الخاصة بـ DTOs تميل إلى أن يكون العرض له متطلبات بيانات خشونة.

نصائح أخرى

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

يمكنك تعريف DTO الخاص بك كواجهة مع تعيينات إلى الكيان ، باستخدام اسم السمة على أنه رسم الخرائط الافتراضية ، وهذا يبدو بسيطًا للغاية ويشبه إلى حد كبير مجموعة فرعية من الكيان ، على الرغم من أنه لا يتعين عليه ذلك. يمكنك استخدام أي تعبير JPQL كخريطة لسمات DTO الخاصة بك.

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