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