جلسه شماره 100رایگان

JPA CRUD Tutorial | آموزش CRUD در JPA

00:52:49

توضیحات جلسه

🎥 این ویدیو قسمت نود و سوم از بوت‌کمپ رایگان جاواست. 📚 Java ORM (JPA/Hibernate) – آموزش کامل عملیات CRUD در JPA در این جلسه وارد یکی از مهم‌ترین بخش‌های کار با ORM می‌شیم: عملیات CRUD در JPA 🔥 این ویدیو پنجمین قسمت از پلی‌لیست Java ORM (JPA/Hibernate) هست و قراره یاد بگیریم چطور عملیات‌های اصلی دیتابیس رو با JPA انجام بدیم. 📌 توی این ویدیو یاد می‌گیریم: ✅ CRUD در JPA دقیقاً یعنی چی؟ 🟢 چطور عملیات CREATE رو با EntityManager انجام بدیم 🔵 چطور داده‌ها رو READ کنیم (خواندن از دیتابیس) 🟡 چطور UPDATE رو انجام بدیم و تغییرات رو ذخیره کنیم 🔴 چطور DELETE کنیم و رکوردها رو از دیتابیس حذف کنیم 🎯 و در پایان هم یه مرور کامل داریم تا همه چیز کامل توی ذهن تثبیت بشه. لینک کدی که زده شد داخل گیت هاب: https://github.com/farzadafi/ProgrammingByFarzadAfi/tree/master/06_orm/01_orm_tutorial 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، می‌تونی توی گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار 🚀

جزوه و مستندات

مفاهیم کلیدی

  • JPA Java Persistence API

یک استاندارد یا Specification در جاوا است که برای مدیریت داده‌های رابطه‌ای در اپلیکیشن‌ها استفاده می‌شود و عملیات دیتابیسی را ساده‌تر می‌کند.

  • ORM Object-Relational Mapping

تکنیکی است که اشیا یا Objects در زبان برنامه‌نویسی را به جدول‌های دیتابیس متناظر می‌کند تا برنامه‌نویس بدون درگیری مستقیم با SQL، با دیتابیس کار کند.

  • Implementation پیاده‌سازی

از آنجا که JPA صرفاً یک استاندارد است، برای اجرا به یک کتابخانه پیاده‌ساز نیاز دارد. Hibernate یکی از محبوب‌ترین پیاده‌سازهای JPA است.

  • Entity

کلاسی است که نمایانگر یک جدول در دیتابیس است. هر نمونه یا Instance از این کلاس، متناظر با یک سطر از آن جدول خواهد بود.

  • EntityManager

رابط اصلی یا Interface برای تعامل با Persistence Context است که عملیات‌های CRUD را روی Entityها مدیریت می‌کند.

  • Transaction

یک واحد کاری است که مجموعه‌ای از عملیات‌ها را در بر می‌گیرد. برای تغییر در دیتابیس، مانند ایجاد، به‌روزرسانی یا حذف، شروع یا Begin و ثبت یا Commit تراکنش الزامی است.

  • Persistence Context

محیطی است که در آن نمونه‌های Entity توسط EntityManager مدیریت می‌شوند و تغییرات آن‌ها ردیابی می‌شود.

  • Lombok

کتابخانه‌ای برای کاهش کدهای تکراری یا Boilerplate است. این کتابخانه با استفاده از انوتیشن‌هایی مانند @Data یا @NoArgsConstructor، متدها و سازنده‌ها را به‌صورت خودکار ایجاد می‌کند.

موارد مصاحبه ای

  • تفاوت JPA و Hibernate در چیست؟

JPA یک واسط برنامه‌نویسی یا API و مجموعه‌ای از استانداردها است. اما Hibernate یک فریم‌ورک است که این استانداردها را پیاده‌سازی می‌کند و قابلیت‌های اضافی نیز ارائه می‌دهد.

  • چرا هر Entity حتماً به No-Args Constructor نیاز دارد؟

فریم‌ورک‌هایی مانند Hibernate برای ساختن نمونه از کلاس Entity هنگام واکشی داده‌ها، از Reflection استفاده می‌کنند. وجود یک سازنده بدون آرگومان یا No-Args Constructor با سطح دسترسی public یا protected برای این کار الزامی است.

  • تفاوت متد persist و merge چیست؟

متد persist برای ذخیره یک Entity جدید و وارد کردن آن به دیتابیس یا Insert استفاده می‌شود.

متد merge برای به‌روزرسانی یا Update یک Entity که قبلاً از وضعیت مدیریت خارج شده است، به کار می‌رود.

  • چرا برای عملیات Read مانند find الزامی به تراکنش دستی نیست اما برای Create/Update/Delete هست؟

عملیات خواندن تغییری در وضعیت دیتابیس ایجاد نمی‌کند. اما برای حفظ یکپارچگی داده‌ها یا Data Integrity در عملیات‌های تغییردهنده، باید تراکنش مدیریت شود تا در صورت بروز خطا، تغییرات ذخیره نشوند.

  • اگر متد commit در انتهای تراکنش صدا زده نشود چه اتفاقی می‌افتد؟

حتی اگر کدهای مربوط به persist یا merge اجرا شده باشند، هیچ تغییری در دیتابیس نهایی نمی‌شود. در این حالت، عملیات اصطلاحاً Rollback می‌شود یا اصلاً اعمال نمی‌گردد.

سناریو کاربردی

در این آموزش، مدیریت موجودیت دانشجو یا Student پیاده‌سازی شد. ابتدا یک کلاس با ویژگی‌های id به‌عنوان کلید اصلی، name و age تعریف شد.

۱. عملیات Create

ابتدا یک Object از دانشجو ساخته شد. سپس یک تراکنش آغاز شد و با متد persist، آبجکت در دیتابیس ذخیره شد. در نهایت تراکنش Commit شد.

۲. عملیات Read

با استفاده از متد find و پاس دادن کلاس Entity و مقدار کلید اصلی یا ID، اطلاعات دانشجو از دیتابیس واکشی شد.

۳. عملیات Update

ابتدا دانشجو با متد find پیدا شد. سپس مقدار ویژگی موردنظر، مثلاً سن، تغییر کرد و با متد merge در قالب یک تراکنش، تغییرات در دیتابیس ثبت شد.

۴. عملیات Delete

مشابه عملیات به‌روزرسانی، ابتدا دانشجو پیدا شد و سپس با متد remove درون یک تراکنش، رکورد مربوطه حذف شد.

بیشتر بدانید

  • نکته دیباگ

با فعال کردن خاصیت show_sql در تنظیمات Hibernate، می‌توانید کوئری‌های SQL تولیدشده توسط JPA را در کنسول مشاهده کنید. این کار برای درک بهتر عملکرد سیستم بسیار مفید است.

  • نکته در مورد Lombok

هنگامی که یک سازنده دلخواه، مانند @AllArgsConstructor، اضافه می‌کنید، سازنده پیش‌فرض جاوا حذف می‌شود. بنابراین برای نیاز JPA حتماً باید از @NoArgsConstructor استفاده کنید.