Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

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

📖توضیحات درس

🎥 این ویدیو قسمت نود و سوم از بوت‌کمپ رایگان جاواست. 📚 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 هر سوالی داشتی، می‌تونی توی گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار 🚀
00:52:49🎯رایگان

📄جزوه

مفاهیم کلیدی

  • 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) که با استفاده از Annotationهایی مانند @Data یا @NoArgsConstructor به صورت خودکار متدها و سازنده‌ها را ایجاد می‌کند.

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

  • تفاوت JPA و Hibernate در چیست؟ JPA یک واسط برنامه‌نویسی (API) و مجموعه‌ای از استانداردهاست، در حالی که Hibernate یک فریم‌ورک است که این استانداردها را پیاده‌سازی کرده و قابلیت‌های اضافی نیز ارائه می‌دهد.

  • چرا هر Entity حتماً به No-Args Constructor نیاز دارد؟ فریم‌ورک‌هایی مانند Hibernate برای ساختن نمونه از کلاس Entity هنگام واکشی داده‌ها از Reflection استفاده می‌کنند و وجود یک سازنده بدون آرگومان (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 تعریف گردید.

  1. عملیات Create: ابتدا یک Object از دانشجو ساخته شد، سپس یک تراکنش آغاز گشت و با متد persist آبجکت در دیتابیس ذخیره و تراکنش Commit شد.
  2. عملیات Read: با استفاده از متد find و پاس دادن کلاس Entity و مقدار کلید اصلی (ID)، اطلاعات دانشجو از دیتابیس واکشی شد.
  3. عملیات Update: ابتدا دانشجو با متد find پیدا شد، مقدار ویژگی مورد نظر (مثلاً سن) تغییر کرد و سپس با متد merge در قالب یک تراکنش، تغییرات در دیتابیس ثبت گردید.
  4. عملیات Delete: مشابه آپدیت، ابتدا دانشجو پیدا شد و سپس با متد remove درون یک تراکنش، رکورد مربوطه حذف گردید.

بیشتر بدانید

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

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