Farzad Afi Logo

FarzadAfi

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

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

📖توضیحات درس

🎥 این ویدیو قسمت نود و یکم از بوت‌کمپ رایگان جاواست 📦 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 هر سوالی داشتی، داخل گروه بپرس؛ خودم یا مربی‌های بوت‌کمپ کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا 🎓 آموزش پروژه‌محور برای یادگیری عمیق، اصولی و ورود به بازار کار
00:25:34🎯رایگان

📄جزوه

مفاهیم کلیدی

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

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

  • 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 باعث می‌شود جداول در ابتدای برنامه ساخته شده و در انتهای کار برنامه (Shut down) حذف شوند.

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

در یک پروژه واقعی، برای اتصال به دیتابیس PostgreSQL با استفاده از JPA، مراحل زیر طی می‌شود: ابتدا در پروژه Maven، پوشه META-INF در مسیر ریسورس‌ها ایجاد شده و فایل persistence.xml در آن قرار می‌گیرد. در این فایل، یک persistence-unit تعریف شده و در بخش provider نام کلاس هایبرنت درج می‌گردد. سپس در بخش properties تنظیمات مربوط به driver (مانند org.postgresql.Driver)، آدرس اتصال به دیتابیس، نام کاربری و رمز عبور وارد می‌شود. همچنین برای راحتی در توسعه، تنظیمات تولید خودکار اسکیما فعال می‌گردد تا JPA به صورت خودکار جداول را بر اساس کلاس‌های موجود در کد، در دیتابیس ایجاد کند.

بیشتر بدانید

  • IDE Tip (IntelliJ Ultimate) در نسخه آلتیمیت اینتلیج، می‌توانید با استفاده از بخش Facets در Project Structure، فایل persistence.xml را به صورت خودکار با نسخه‌های دلخواه (مثلاً Jakarta EE 3) ایجاد کنید.

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

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