persistence.xml in JPA | فایل persistence.xml در JPA
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
- 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 رخ ندهد.
