+1 امتیاز
قبل در برنامه نویسی توسط (308 امتیاز)
ویرایش شده قبل توسط

در هایبرنت برای ارتباط با دیتابیس باید session و transaction باز شود تفاوت connection با session چیست؟ چون session در هایبرنت thread-safe نیست  یعنی به  ازای هر thread یک session داریم؟ و قاعدتا یک session برای ارتباط با دیتابیس یک connection احتیاج دارد  در برنامه های تحت وب که هزاران درخواست به یک وب سرور فرستاده می شود و به ازای هر در خواست یک thread تخصیص داده میشود  و اگر هر thread بخواهد با دیتابیس ارتباط برقرار کند هزاران session باز میشود یعنی هزاران connection ؟! در صورتی که میدانیم ساخت connection هزینه بر است و معمولا از connection polling استفاده میکنیم ولی تا جایی که میدونم connection polling هم محدودیت هایی دارد مثلا 200 تا و آیا در هایبرنت برای یک select معمولی لازم است transaction باز شود؟ به طور مثال در فریم ورک هایی مانند spring که transaction را مدیریت می کنند ، اگر متدی داشته باشیم که لیست یک entity را از دیتایس واکشی کند باید بالای سر متد از annotation به نام Transactional استفاده کنیم  این واکشی که یک select معمولی است آیا احتیاج به باز کردن transaction دارد؟ اگر احتیاج هست پس کاربرد session چیست ؟؟و این طور که من متوجه شدم در صورتی یک  transaction باز می کنیم که بخواهیم چندین عملیات دیتابیسی از قبیل اپدیت ،حذف و... در یک واحد کاری انجام شود

1 پاسخ

+1 امتیاز
قبل توسط (80 امتیاز)
ویرایش شده قبل توسط

Hibernate Session یه پوشاننده (wrapper) هست برای Connection.
چون با این روش دیگه کاربر از نوشتن خیلی کدهای مربوط به ذخیره سازی Entity خلاص میشه.

Connection ها در مخزن قرار داشته و هنگامی که شما متد SessionFactory.openSession رو فراخوانی می کنید, ابتدا Hibernate یه Connection از مخزن میگره و یه Session اطرافش ایجاد میکنه و اونو تحویل میده.

در مورد تراکنش باید گفت تراکنش تو لایه های مختلف انجام میشه. یعنی در پایگاه داده, لایه business , ... اگه فقط یه select ساده است تراکنش خود پایگاه داده کافیه.

سوالات مشابه

+1 امتیاز
1 پاسخ 575 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
0 امتیاز
1 پاسخ 578 بازدید
0 امتیاز
1 پاسخ 512 بازدید
0 امتیاز
1 پاسخ 593 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط mbanaee (32 امتیاز)
0 امتیاز
0 پاسخ 259 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط tashtboland (2.2هزار امتیاز)
0 امتیاز
1 پاسخ 408 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 470 بازدید
...