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

persistence.xml in JPA | فایل persistence.xml در JPA

00:25:34

توضیحات جلسه

🎥 این ویدیو قسمت نود و یکم از بوت‌کمپ رایگان جاواست 📦 Java ORM – JPA / Hibernate (جلسه سوم) در این جلسه وارد یکی از پایه‌ای‌ترین و در عین حال مهم‌ترین فایل‌های JPA می‌شیم: 📄 فایل persistence.xml اگه برات سوال بوده که: persistence.xml دقیقاً چیه؟ 🤔 چرا بدون این فایل JPA عملاً کار نمی‌کنه؟ تنظیمات دیتابیس، Provider و SQLها کجا و چطوری انجام می‌شن؟ این ویدیو دقیقاً برای توئه 💡 در این آموزش، قدم‌به‌قدم و کاملاً عملی بررسی می‌کنیم: 🔍 معرفی persistence.xml و نقش اون در JPA 📂 محل قرارگیری استاندارد فایل persistence.xml در پروژه 🧠 توضیح کامل بخش‌های مختلف فایل و کاربرد هر کدوم 🔌 آشنایی با Provider (مثل Hibernate) و نحوه‌ی انتخاب اون 🛢️ تنظیمات اتصال به دیتابیس (URL، username، password و …) ⚙️ مقداردهی اولیه دیتابیس و نحوه‌ی ساخته شدن ساختارها 🧾 فعال‌سازی نمایش SQL برای درک بهتر کوئری‌ها 🔁 در پایان هم یک مرور کلی داریم تا همه‌چیز تو ذهنت تثبیت بشه 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، داخل گروه بپرس؛ خودم یا مربی‌های بوت‌کمپ کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا 🎓 آموزش پروژه‌محور برای یادگیری عمیق، اصولی و ورود به بازار کار

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

مفاهیم کلیدی

  • persistence.xml

فایل اصلی پیکربندی در JPA است که به‌عنوان مرکز تنظیمات پروژه عمل می‌کند. این فایل مشخص می‌کند که برنامه چگونه باید به دیتابیس متصل شود و از کدام پیاده‌ساز یا Provider استفاده کند.

  • Persistence Unit

یک واحد منطقی در فایل تنظیمات است که مجموعه‌ای از کلاس‌های موجودیت یا Entities و تنظیمات مربوط به دیتابیس، مانند نام دیتابیس و جزئیات اتصال، را گروه‌بندی می‌کند. هر پروژه می‌تواند یک یا چند Persistence Unit داشته باشد.

  • Provider

کتابخانه یا ابزاری است که استانداردهای JPA را پیاده‌سازی می‌کند. نمونه‌های معروف آن شامل Hibernate، EclipseLink و OpenJPA هستند. برای کار با JPA، حتماً باید یک Provider مشخص شود.

  • META-INF

نام دایرکتوری استانداردی است که فایل persistence.xml باید در آن قرار بگیرد. در پروژه‌های Maven، این پوشه معمولاً در مسیر src/main/resources/META-INF ساخته می‌شود.

  • Properties

بخش مهمی در فایل تنظیمات است که شامل پارامترهای جزئی‌تری مانند درایور JDBC، آدرس دیتابیس یا URL، نام کاربری، رمز عبور و تنظیمات اختصاصی پیاده‌ساز، مانند نمایش دستورات SQL در کنسول، است.

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

  • محل دقیق قرارگیری فایل persistence.xml در پروژه کجاست؟

این فایل باید حتماً در پوشه‌ای به نام META-INF قرار بگیرد؛ پوشه‌ای که در ریشه کلاس‌پت یا Class Path جاوا وجود دارد. در ساختار Maven، مسیر استاندارد آن به‌صورت زیر است:

src/main/resources/META-INF/persistence.xml
  • تفاوت اصلی نسخه ۲ و ۳ در فایل تنظیمات چیست؟

تفاوت اصلی در فضای نام یا Namespace است. در نسخه‌های قدیمی از javax.persistence استفاده می‌شد، اما در نسخه‌های جدیدتر، یعنی Jakarta EE 9 و بالاتر، از jakarta.persistence استفاده می‌شود.

  • چگونه می‌توان دستورات SQL تولیدشده توسط Hibernate را در کنسول مشاهده کرد؟

با اضافه کردن یک Property به نام hibernate.show_sql و مقداردهی آن به true در بخش تنظیمات، می‌توان تمام کوئری‌هایی را که به دیتابیس ارسال می‌شوند، در خروجی کنسول مشاهده کرد.

  • نقش Persistence Unit Name در کدنویسی چیست؟

این نام به‌عنوان یک شناسه منحصربه‌فرد عمل می‌کند. هنگام ساختن EntityManagerFactory در کد جاوا، از این نام استفاده می‌شود تا JPA بداند کدام تنظیمات را باید بارگذاری کند.

  • تفاوت گزینه‌های create و drop در تولید اسکیما چیست؟

گزینه create جدول‌ها را هنگام شروع برنامه می‌سازد. گزینه drop جدول‌های موجود را حذف می‌کند. گزینه create-drop باعث می‌شود جدول‌ها در ابتدای برنامه ساخته شوند و در انتهای اجرای برنامه یا Shutdown حذف شوند.

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

در یک پروژه واقعی، برای اتصال به دیتابیس PostgreSQL با استفاده از JPA، مراحل زیر طی می‌شود:

ابتدا در پروژه Maven، پوشه META-INF در مسیر منابع ایجاد می‌شود و فایل persistence.xml در آن قرار می‌گیرد.

در این فایل، یک persistence-unit تعریف می‌شود و در بخش provider نام کلاس Hibernate درج می‌شود.

سپس در بخش properties تنظیمات مربوط به driver، مانند org.postgresql.Driver، آدرس اتصال به دیتابیس، نام کاربری و رمز عبور وارد می‌شود.

همچنین برای راحتی در توسعه، تنظیمات تولید خودکار اسکیما فعال می‌شود تا JPA به‌صورت خودکار جدول‌ها را بر اساس کلاس‌های موجود در کد، در دیتابیس ایجاد کند.

بیشتر بدانید

  • IDE Tip IntelliJ Ultimate

در نسخه آلتیمیت IntelliJ IDEA، می‌توانید با استفاده از بخش Facets در Project Structure، فایل persistence.xml را به‌صورت خودکار و با نسخه‌های دلخواه، مانند Jakarta EE 3، ایجاد کنید.

  • IDE Tip IntelliJ Community

در نسخه رایگان یا Community، امکانات خودکار نسخه آلتیمیت برای JPA وجود ندارد. بنابراین توسعه‌دهنده باید پوشه META-INF و فایل مربوطه را به‌صورت دستی ایجاد کند و محتوای استاندارد را در آن قرار دهد.

  • استفاده از نمونه‌های آماده

برای اطمینان از صحت تگ‌ها و نسخه‌ها در فایل XML، بهترین راه استفاده از نمونه فایل‌های استاندارد در منابعی مانند GitHub یا وب‌سایت‌های مرجع JPA است تا خطای تایپی در ساختار XML رخ ندهد.