سؤال

p> href="http://docspring.io/spring/docs/1.2.x/api/org/springframework/transaction/sanotation/propagation.html"> مستندات الربيع القياموظيفة رائعة لوصف خصائص انتشار المعاملات.

ومع ذلك، كنت أتساءل عما إذا كان هناك أي أمثلة معروفة في العالم الحقيقي المتاحة التي تصف كل من هذه الخصائص أكثر شمولا بشروط العادي؟

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

المحلول

incomation_required

giveacodicetagpre.

عندما يسمى Dosomething ()، سيبدأ تشغيل معاملة جديدة إذا لم يكن المتصل قد بدأ بالفعل معاملة .

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

إذا تم إلقاء استثناء داخل Dosomething ()، فسيتم طرحه مرة أخرى، مما يعني أن المتصل سوف يرى أيضا المعاملة تدحرجت مرة أخرى.

عند إرجاع Dosomething ()، لن يتم ارتكاب المعاملة بعد. هذا هو المتصل الذي يرتكب المعاملة (أو ربما لفات الظهر).

incomation_requires_new

giveacodicetagpre.

عندما يسمى dosomething () سوف دائما ابدأ عملية جديدة.

إذا بدأ المتصل هذا الأسلوب بالفعل معاملة (TXNouter)، فإن معاملة المتصلين هي معلق ويتم إنشاء معاملة جديدة (TXNinner) (أي هناك معاملتان في اللعب).

إذا تم إلقاء استثناء داخل Dosomething ()، فسيتم التراجع TxNinner، ولكن المعاملة "المعلقة" من المتصل (TXNouter) لا تتأثر.

عند إرجاع dosomething () دون استثناء، سوف يرتكبها المعاملة (TXNinner). سيتم استئناف معاملات المتصل (TxNouter) ولا نتحرك بأن معاملة أخرى قد ارتكبت. يمكن للمتصل بعد ذلك ارتكاب أو لفة TXNououter أثناء اراسه.

النقطة المهمة التي يجب ملاحظتها هي أن قاعدة البيانات تعتبر TXNououter و TxNinner كمعاملات مستقلة تماما، وبالتالي يتم ارتكاب اثنين من الاستقلال.

الانتشار

giveacodicetagpre.

متداثر يمكن استخدامه فقط إذا تدعم برنامج تشغيل JDBC و / أو قاعدة البيانات JDBC STAPPOPESS

عندما يسمى Dosomething ()، سيبدأ تشغيل معاملة جديدة إذا لم يكن المتصل قد بدأ بالفعل معاملة .

إذا بدأ المتصل هذا الأسلوب بالفعل معاملة، فسيتم استخدام معاملة المتصلين ولا يتم إنشاء أي معاملة جديدة (أي معاملة واحدة في اللعب). ومع ذلك، يتم وضع علامة "SavePoint" على المعاملة عند إدخال Dosomething ().

إذا تم إلقاء استثناء داخل Dosomething ()، فيمكن أن تدعم المعاملة جزئيا من المعاملة إلى "SavePoint". سيستمر المتصل مع المعاملة.

عند إرجاع dosomething () دون استثناء هو المتصل الذي يرتكب المعاملة بأكملها (أو استرخاء).

النقطة المهمة التي يجب ملاحظتها هي أن قاعدة البيانات تتناول معاملة واحدة فقط وهناك ارتكاب واحد فقط.

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