تفاوت فایل persistence.xml وقتی ازjpa و hibernate استفاده می کنیم چیست؟

+1 رأی
میانگین بازدید روزانه 0.24115 بازدید
فایل persistence.xml در مورد هرکدام به چه شکل است؟ و چه کتابخانه هایی باید استفاده کرد؟
سوال 1 سال قبل در تالار برنامه نویسی توسط hamid19 (12 امتیاز)
ویرایش 1 سال قبل توسط hamid19

1 جواب

0 رأی
 
بهترین جواب

JPA چیزی نیست جزو مجموعه ای از API های استاندارد.

هرکدام از vendor ها اومدن این API ها روپیاده سازی کردند مانند:

Hibernate

EclipseLink

اما برای استفاده از Hibenrate توی پروژه تون شما دو روش در پیش دارید :

  • استفاده از خود تکنولوژی Hibernate که برای اینکار نیاز دارید  فایل hibernate.cfg.xml رو توی پروژه تون داشته باشید و تعریفش کنید
  • استفاده از JPA و مشخص کردن نوع پیاده سازی  در فایل Persistence.xml و در این فایل یک proprty وجود داره به صورت زیر درش دقیقا مشخص می کنید که از Hibernate می خوام استفاده کنم
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.2"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <!-- Define persistence unit -->
    <persistence-unit name="my-persistence-unit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    </persistence-unit>
</persistence>

این عمده ترین تفاوت در فایل persistence.xml است

اما چه فرقی داره شما مستقیما سراغ خود تکنولوژی هایبرنت بروید یا از طریق JPA از این تکنولوژی استفاده کنید

باید بگم عمر هایبرنت خیلی بیشتر از JPA است  و پخته تر اونه . خیلی چیزایی در هایبرنت است و می تونید انجامش بدید که توی مجموعه API های استاندارد JPA و داکیومنت هاش نیست یا محدود تعریف شده

و بالطبع دست شما بازتره توی هایبرنت!

اما از طرف دیگه اگه از API های استاندارد JPA استفاده کنید چون این نوع API ها فقط با interface  ها سروکار داره وهرجایی تو پروژه تون اونها استفاده کنیدپروژه تون رو به این interface ها ( انتزاع ) وابسته می کنید نه پیاده سازی خاص ، در نتیجه پروژه شما در مقابل تغییرات آتی مصون تره یعنی اگه فردا به هر دلیلی بخواهید بجای هایبرنت از پیاده سازی دیگه ی استفاده کنید تغییرات خیلی کمی تو ی کدهاتون نیاز هست بدید

جدای از اینکه نوع پیاده سازی انتخابی شما چی هست در یک فایل persistence.xml  موارد زیر رو  بایستی مشخص و پیکربندی کنید ( تقریبا تو فایل hibernate.cfg.xml هم همین ها هست ) :

  • persistence unit  با این کار دارید بیان می کنید از چه دیتابیسی می خواهید استفاده کنید ، ممکنه توی یه پروژه از دوتا دیتا بیس متفاوت استفاده کنید به ازای هر کدام یک persistence unit  باید تعریف کنید

در داخل هر persistence unit  نیاز هست مواردی زیر دست کم مشخص کنید:

  • نام و نوع jdbc driver ی که قراره داخل پروژه تون استفاده کنید ( مثل postgresql  یا mysql )
  • آدرس url اون دیتابیسی که می خواهید بهش وصل بشید و قراره براتون connection  فیزیکی ایجاد کنه
  • نام کاربری جهت ورود به اون دیتابیس
  • رمز عبور جهت ورود به اون دیتابیس
  •  اگه از روش annotation برای مشخص کردن کلاس های entity خود ( یعنی کلاسهایی که قصد دارید state اونارو توی دیتابیس ذخیره کنید ) استفاده کرده باشید بایستی مشخص کنید توی کدوم پکیج ها دنبال اون کلاسها بگرده

این ها مینیم ویژگی هایی هست که شما توی فایل پیکربندی خودتون باید مشخص کنید

و البته یکی از مهم ترین چیزهایی که توی این مدل پروژه ها باید مشخص کنید مدیر تراکنش شما( transaction mamanger ) است . که امروزه جدای نوع و اندازه پروژه معمولا ازJTA استفاده می کنن .

جواب 1 سال قبل توسط solmaz oskouii_81021 (130 امتیاز)
انتخاب شده در 1 سال قبل توسط hamid19
بسیار عالی بود ممنونم
چطور میتونم کمک بیشتری بگیرم از شما؟
خواهش می کنم
همین جا من درخدمت تون هستم  دوست دارم سوالات و جوابها به اشتراک گذاشته بشه تا افراد حرفه ای تر از من بتونن نقدم کنن و صد البته شما هم بهتر راهنمایی میشید و بهترین جواب رو دریافت می کنید
این آدرس وبلاگ من توی ویرگوله گاهی مطالبی که خودم یاد می گیرم اینجا منتشر می کنم
https://virgool.io/@solmaz.oskouie

سوال های مشابه

0 رأی
3 جواب میانگین بازدید روزانه 0.38278 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط یوری (426 امتیاز)
0 رأی
2 جواب میانگین بازدید روزانه 0.41516 بازدید
+1 رأی
3 جواب میانگین بازدید روزانه 0.27624 بازدید
+4 رأی
1 جواب میانگین بازدید روزانه 1.022,817 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.55256 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط masoud shahhosseini_ (40 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.06134 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.11258 بازدید
سوال 6 سال قبل در تالار برنامه نویسی توسط kashi (7,139 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.09227 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.17337 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.34156 بازدید
کانال تلگرام جواب یاب
...