+5 امتیاز
قبل در برنامه نویسی توسط (922 امتیاز)

Hibernate و JPA هر دو کتابخانه ORM در جاوا هستند تفاوت آنها در چیست؟

1 پاسخ

+7 امتیاز
قبل توسط (519 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

سوال بسیاری خوبی است!

این سوال در ذهن تمام افرادی که می خواهند کار با ORMها در جاوا را یاد بگیرند به وجود می آید!

به طور کلی می توان گفت که JPA یک استاندارد است. یا این که به صورت ساده تر می توان گفت که JPA یک فایل PDF به علاوه یک JAR فایل می باشد که درون آن نحوه پیاده سازی کتابخانه ORM در جاوا توضیح داده شده است.

حال با توجه به این استاندارد هر شرکت یا شخصی که بخواهد برای جاوا ORM طراحی کند می تواند از این استاندارد تبعیت کند.

شرکت JBoss نیز یک ORM به نام Hibernate طراحی کرده است که از این استاندارد تبعیت می کند.

یا بنیاد Eclipse پیاده سازی این استاندارد را با نام EclipseLink انجام داده است.

پیاده سازی دیگری از بنیاد Apache با این نام وجود دارد که نام آن Open JPA می باشد.

در نظر داشته باشید که هیچ الزامی برای تبعیت از این استاندارد وجود ندارد اما بهتر است که از این استاندارد تبعیت شود.

شما برای استفاده از Hibernate می توانید از Interfaceهای JPA استفاده کنید و به صورت استاندارد کد بزنید و برنامه بنویسید ویا می تواند از این Interfaceها استفاده نکنید! و از Interfaceهای دیگر Hibernate به نام Hibernate native استفاده کنید.

این که از کدام Interfaceها استفاده شود بیشتر سلیقه ای می باشد. اما در نظر داشته باشید که اگر از Interfaceهای JPA استفاده کنید بنا به هر دلیلی می توانید با کم ترین تغییرات به دیگر پیاده سازی های JPA مانند EclipseLink یا Open JPA مهاجرت کنید. از طرف دیگر در نظر داشته باشید که استفاده از کتابخانه Hibernate به صورت Hibernate native به شما قابلیت ها و انعطاف پذیری های بیشتری می دهد.

و در آخر باید به این نکته اشاره کنم که توسعه جاوا به همین صورت به پیش می رود. یعنی ابتدا برای هر کاری یک استاندارد تعریف می شود و شرکت های مختلف آن استانداردها را پیاده سازی می کنند.

سوالات مشابه

0 امتیاز
1 پاسخ 474 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
0 امتیاز
3 پاسخ 681 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
3 پاسخ 1.3هزار بازدید
+2 امتیاز
1 پاسخ 469 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط java_ (778 امتیاز)
0 امتیاز
1 پاسخ 404 بازدید
+1 امتیاز
0 پاسخ 302 بازدید
0 امتیاز
2 پاسخ 585 بازدید
+1 امتیاز
0 پاسخ 293 بازدید
+2 امتیاز
1 پاسخ 872 بازدید
+1 امتیاز
1 پاسخ 886 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
...