Hibernate-reactive: session.remove && session.getReference

تم إنشاؤها على ٧ سبتمبر ٢٠٢٠  ·  3تعليقات  ·  مصدر: hibernate/hibernate-reactive

مرحبًا ، كما أفهم ، باتباع jpa ، هناك طريقة واحدة فقط لإزالة الكيان المنفصل:

factory.withTransaction((session, transaction) -> 
    session.merge(sampleEntity).invokeUni(session::remove)
).await().indefinitely();

كل شيء على ما يرام ، ولكن إذا كان الأمر يتعلق بالأداء ، فإن عملية الدمج تستغرق وقتًا طويلاً ويمكن أن تسبب مشاكل حقيقية في الأداء. على سبيل المثال ، وفقًا لقياسات الوقت غير الدقيقة ، تستغرق إزالة 5000 عنصر حوالي 4 ثوانٍ ، في حالة السبات يستغرق 50 مللي ثانية.

لقد قرأت للتو عن طريقة جديدة تسمى session.getReference والتي تُرجع المثيل الدائم لكيان معين. هل من الممكن السماح باستخدامه مقابل session.remove ؟

bug

ال 3 كومينتر

لقد قرأت للتو عن طريقة جديدة تسمى session.getReference والتي تُرجع المثيل الدائم لكيان معين. هل من الممكن السماح باستخدامه مقابل session.remove ؟

آه ، نقطة جيدة ، بالتأكيد يجب أن تكون قادرًا على القيام بذلك. لقد نجحت في تحقيق النجاح في # 360.

ومع ذلك ، أريدك أن تفهم أنه لا توجد طريقة للحصول على عنصر remove() بدون جلبه أولاً. هذا لأن remove() يحتوي على دلالات مثل الحذف المتتالي ، وإزالة المجموعة التي تعتمد على وجود حالة الكيان في الجلسة.

إذا كنت بحاجة ماسة إلى أن تكون قادرًا على حذف كيان دون جلبه ، فيجب عليك استخدام StatelessSession.delete() أو استعلام HQL delete .

شكراً لـ @ Xset-s PS للإبلاغ عن هذا ، لقد كان بمثابة إشراف كبير من جانبي

لا توجد مشكلة ، شكرًا لاستجابتك التفصيلية حول إزالة العملية ولإصلاح سريع للغاية. أقوم بإجراء تجارب الآن وإعادة كتابة تطبيقي من جانب الخادم باستخدام مكتبتك الجديدة الرائعة ، لذلك من السهل بالنسبة لي التعرف على بعض المشكلات الصعبة ، والتي يمكن التقاطها فقط (أو باستخدام عدد كبير من الاختبارات 😄)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات