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