صفحه 1 از 1

(concurrency in entityManager (hibernate

ارسال شده: چهار شنبه 19 شهریور 1399, 7:19 pm
توسط sajadMathShah
با عرض سلام و خسته نباشید خدمت استاد گرامی :

سوال :
استاد عزیز ، طبق مطالبی که فرمودید ، اگر بخواهیم با متد persist تغییری روی یک داده از جدول دیتا بیس انجام دهیم (( با دیدگاه orm در hibernate )) ، باید آبجکت را از خود hibernate بگیریم ، سپس تغییرات را ایجاد کنیم و مجددا آبجکت را به متد persist دهیم ، تا آن را آپدیت کند ، طبق چیزی که من متوجه شدم ، فلسفه این کار این است که از concurrency جلوگیری شود و اینکه وقتی میخواهیم داده ای را تغییر دهیم ، آخرین تغییرات آن را از دیتابیس بگیریم ،
سوال بنده این است که : این امکان وجود دارد که ما همزمان چند entityManager به وجود آورده باشیم (( مثلا دوتا )) که هر دوی آنها در یک زمان آبجکت مثلا a را find میکنند و در اختیار کاربر قرار میدهند تا آن داده را تغییر دهد ، در این حین امکان این وجود دارد که یکی از این entityManager ها transaction خود را زود تر commit کند و این تغییر در دیتابیس رخ دهد ، اما entiytManger دوم که همین آبجکت را همزمان find کرده بود از این تغییر بیخبر است .
در این وضعیت ، بازهم از concurrency جلوگیری نشده ، میخواستم بدانم آیا سیستمی وجود دارد که جلوی این مشکل را میگیرد ؟؟ آیا با تغییر در entityManger اول ، entityManger دوم نیز متوجه تغییرات میشود ؟؟

با تشکر فراوان از زحمات شما

Re: (concurrency in entityManager (hibernate

ارسال شده: چهار شنبه 19 شهریور 1399, 11:16 pm
توسط java2
با سلام، پاسخ مثبت است، استفاده از RC بهترین گزینه می باشد.