Fetch Type in JPA
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
Eager Loading
در این روش، دادههای وابسته بلافاصله همراه با
entityاصلی بارگذاری میشوند. یعنی وقتی یکobjectاز دیتابیس گرفته میشود، ارتباطهای آن هم همان لحظه درmemoryلود میشوند. -
Lazy Loading
در این روش، دادههای وابسته فقط زمانی بارگذاری میشوند که واقعاً به آنها نیاز داشته باشیم. این کار باعث کاهش مصرف
memoryو جلوگیری از بارگذاری غیرضروری دادهها میشود. -
ORM
مکانیزمی برای نگاشت
objectهای جاوا به جدولهای دیتابیس. در ORM، نحوهیfetchشدن دادهها اهمیت زیادی درperformanceدارد. -
Fetch Type
تعیین میکند که یک ارتباط بین
entityها به صورتeagerیاlazyبارگذاری شود. -
FetchType.LAZYدادههای مرتبط را تا زمان استفاده واقعی بارگذاری نمیکند. این گزینه برای جلوگیری از loading اضافی و بهینهسازی
performanceبسیار مهم است. -
FetchType.EAGERدادههای مرتبط را بلافاصله لود میکند. این روش سادهتر است اما ممکن است باعث بارگذاری بیش از حد دادهها شود.
-
@JoinColumn
موارد مصاحبه ای
-
فرق Lazy Loading و Eager Loading چیست؟
در
Lazy Loadingدادههای وابسته فقط هنگام نیاز بارگذاری میشوند، اما درEager Loadingهمهچیز همان ابتدا لود میشود. -
چرا Lazy Loading معمولاً بهتر است؟
چون فقط دادههای لازم را میگیرد،
memoryکمتری مصرف میکند و از بارگذاری غیرضروری جلوگیری میکند. -
مشکل Eager Loading چیست؟
ممکن است باعث لود شدن حجم زیادی از دادههای بیاستفاده شود و
performanceرا کاهش دهد. -
Fetch Type در JPA چه نقشی دارد؟
مشخص میکند ارتباط بین
entityها چه زمانی از دیتابیس دریافت شود. -
FetchType.LAZYبرای چه موقعیتهایی مناسب است؟وقتی احتمال دارد همیشه به دادههای مرتبط نیاز نداشته باشیم و بخواهیم لود شدن آنها را به تعویق بیندازیم.
-
FetchType.EAGERبرای چه موقعیتهایی مناسب است؟وقتی مطمئن هستیم دادههای وابسته همیشه مورد نیاز هستند و میخواهیم همان ابتدا همهچیز آماده باشد.
-
چرا Eager Loading میتواند خطرناک باشد؟
چون ممکن است هنگام لود یک
entityساده، تعداد زیادیobjectمرتبط هم ناخواسته واردmemoryشوند.
بیشتر بدانید
-
نکته عملکردی
در بسیاری از پروژهها،
Lazy Loadingانتخاب امنتر و بهینهتری است، چون از بارگذاری اضافی جلوگیری میکند. -
نکته طراحی
Eager Loadingاگر بدون دقت استفاده شود، میتواند باعث ایجاد وابستگیهای سنگین و غیرقابل پیشبینی در لایه persistence شود. -
نکته مفهومی
فهم درست
fetch strategyیکی از مهمترین مهارتها برای کار باHibernateوSpring Data JPAاست.
