آموزش hibernate در جاوا به زبان ساده
اگر شما به دنبال راهی برای مدیریت پایگاه داده در برنامههای جاوا خود هستید، Hibernate یکی از بهترین ابزارهایی است که میتوانید از آن استفاده کنید. در این مقاله، به آموزش Hibernate در جاوا میپردازیم و به شما نشان میدهیم که چگونه از این فریمورک قدرتمند برای انجام عملیات مختلف پایگاه داده استفاده کنید.
Hibernate چیست؟
Hibernate یک فریمورک ORM (Object-Relational Mapping) برای زبان برنامهنویسی جاوا است. این فریمورک به شما این امکان را میدهد که از پایگاه دادههای رابطهای به صورت شیگرا استفاده کنید. با Hibernate، میتوانید جداول پایگاه داده را به کلاسهای جاوا و ستونهای جداول را به خصوصیات این کلاسها نگاشت کنید.
hibernate ابزاری است که دارای یک لایه انتزاعی است و وظیفهی ذخیره سازی و بازیابی اشیای جاوا در پایگاه داده را دارد. در این مقاله به آموزش hibernate در جاوا میپردازیم و سعی میکنیم جزئیات آن را پوشش دهیم.
زبان برنامه نویسی جاوا یک زبان شیگرا است که از بسیاری جهات مزیتهای زیادی دارد ولی همچنین هنگام کار با این زبان محدودیتهایی هم وجود دارد. مدیریت دادهها در زبانهای شیگرا به شکل متفاوتی انجام میشود و از آن جایی که پایگاههای دادهی رابطهای، اطلاعات را به شکل جدول ثبت میکنند، عدم تطابقی که رخ میدهد میتواند مشکل ساز باشد. به این مشکل عدم مطابقت امپدانس شی / رابطهای گفته میشود.
برای حل این مشکل میتوان از hibernate در جاوا استفاده کرد. به عبارت دیگر این فریم ورک زبان برنامه نویسی جاوا و سیستمهای مدیریت پایگاه داده رابطهای را بهتر با هم مرتبط میکند. Hibernate منطق پایداری را توسعه میدهد که باعث میشود پردازش و ذخیرهی دادهها برای استفادهی طولانیتر انجام شود.
Hibernate نوعی ابزار ORM (مخفف Object Relational Mapping) است. ابزار ORM تکنیکی است که شی ذخیره شده در پایگاه داده را نقشه برداری میکند. در واقع با استفاده از این ابزار، ایجاد دادهها، ویرایش آنها و به طور کلی دسترسی به آنها سادهتر انجام میشود.
مزیت دیگر hibernate، جداسازی برنامه نویسی از نوع پایگاه داده است. به عبارت دیگر کاربر میتواند بدون در نظر گرفتن اینکه از چه پایگاه دادهای استفاده میکند کدنویسی کند و مطمئن باشد که hibernate میتواند از پس آن بربیاید. همچنین کدهای نوشته شده توسط برنامه نویس نیز در این حالت کمتر است.
معماری Hibernate در جاوا
Hibernate با داشتن معماری لایهای به کاربر کمک میکند تا بتواند بدون نیاز به دانستن APIهای بنیادی کار کند. Hibernate از پایگاه داده و داده های پیکربندی برای ارائه خدمات و اشیای پایدار (Persistence) به برنامه استفاده میکند. (منظور از پایداری یا Persistence در اینجا یعنی دادههای تولید شده و دادههایی که در برنامه استفاده میشوند باید مدت زمان بیشتری نسبت به پردازش تولیدشان عمر کنند. همین نکته باعث حل مشکل عدم تطابق بین زبان برنامه نویسی جاوا و سیستمهای مدیریت پایگاه داده رابطهای میشود.)
پیشنهاد مطالعه: آموزش مفهوم Final در جاوا + مثال عملی
معماری Hibernate در جاوا سه بخش دارد:
- مدیریت اتصال: این سرویس قابلیت اتصال پایگاههای داده و مدیریت آنها را ایجاد میکند. از آن جایی که این اتصال نیاز به منابع زیادی دارد پرهزینهترین بخش معماری هایبرنیت است.
- مدیریت تراکنش: با کمک این سرویس امکانی فراهم میشود که کاربر بتواند همزمان چندین دستور را در پایگاه داده اجرا کند.
- نقشه برداری رابطهای اشیا: این تکنیک برای نشان دادن دادهها از فرم شی به فرم رابطهای به کار میرود. در این حالت هایبرنیت شی را از طریق متد Session.save دریافت میکند و پس از بررسی وضعیت شی، درخواست مربوطه را انجام میدهد.
در نوعی از معماری که معماری Lite نام دارد، بخش سوم معماری یعنی نقشه برداری یا نگاشت رابطهای اشیا اهمیت بیشتری دارد و فقط از آن استفاده میشود ( مدیریت اتصال و مدیریت تراکنش کارایی بالایی ندارند).
البته معماری دیگری به نام Full Cream وجود دارد که از هر سه بخش معماری هایبرنیت یعنی مدیریت اتصال ، مدیریت تراکنش و نگاشت رابطهای اشیا استفاده میکند.
چهار لایه اصلی در معماری Hibernate
- java application layer
- hibernate framework layer
- backhand api layer
- database layer
مزایای استفاده از هایبرنیت:
Hibernate در جاوا مزایای زیادی دارد که از آن جمله می توان به موارد زیر اشاره کرد :
- اپن سورس و کم حجم بودن Hibernate: سبک بودن و منبع باز بودن این ابزار، آن را در دسترس و کارآمد می کند.
- عملکرد سریع (fast performance): اجرای Hibernate به دلیل قابلیت کش درونی آن، بسیار سریع است .
- دو مدل کش در Hibernate وجود دارد: کش مرحله اول (first level Cache) و کش مرحله دوم (second level Cache). کش مرحله اول به صورت پیش فرض فعال است. استفاده از حافظه کش به عملکرد سریع کمک میکند.
- استقلال پایگاه داده (Database Independent query): با کمک این ویژگی میتوانید مستقل از نوع پایگاه داده با آن کار کنید و نیازی نیست که بر اساس نوع پایگاه داده کدنویسیهای متفاوت انجام دهید. قبل از هایبرنیت این محدودیت وجود داشت و با تغییر پایگاه داده، کاربر مجبور بود کدها را بازنویسی کند.
- ایجاد خودکار جدول در پایگاه داده: با کمک این قابلیت دیگر نیازی به ایجاد دستی جداول نیست و به صورت اتوماتیک جداول ایجاد میشوند.
- استفاده از Join: این ویژگی دریافت و بازیابی اطلاعات جدولها را سادهتر میکند.
رابطها در معماری Hibernate:
رابطها در معماری Hibernate به صورت زیر هستند:
- presistent object
- session factory: این منبع تولید session اطلاعات و دادههای مورد نیاز خود را ازconnection proviver میگیرد.
- transaction factory :transaction factory به عنوان تولید کننده تراکنش در سطح برنامه شناخته میشود که البته استفاده از آن اختیاری است.
- connection factory: تولید کننده رابط پایگاه داده جاوا ( JDBC connection ) است و برنامه را از منبع داده ومدیریت درایو جدا میکند. استفاده از این رابط نیز اختیاری است.
- session :session object رابط کاربری بین نرم افزار و دادههای پایگاه ایجاد میکند. از این قابلیت برای وارد کردن، به روزرسانی و حذف اشیا در برنامه استفاده میشود. session object از ویژگی کش مرحله اول برای دادهها استفاده میکند.
- Transaction :transaction مجموعه واحدی از عملیاتها در سیستم است که دو حالت دارد : یا اجرای همه این عملیاتها به صورت کامل انجام میشود یا هیچ کدام اجرا نمیشوند. رابط کاربری org.transaction.hibernate بستر مناسبی برای متدهای مدیریت تراکنشها ایجاد میکند. استفاده از این رابط نیز اختیاری است.
چرا از Hibernate در جاوا استفاده کنیم؟
استفاده از Hibernate مزایای بسیاری دارد، از جمله:
- سادگی در مدیریت دادهها: با Hibernate، شما میتوانید به راحتی دادههای خود را مدیریت کنید بدون اینکه نیاز به نوشتن کد SQL داشته باشید.
- استقلال از پایگاه داده: Hibernate از چندین پایگاه داده مختلف پشتیبانی میکند و شما میتوانید به راحتی پایگاه داده خود را تغییر دهید.
- صرفهجویی در زمان: Hibernate بسیاری از عملیات پایگاه داده را به صورت خودکار انجام میدهد، که باعث صرفهجویی در زمان شما میشود.
شروع کار با Hibernate
برای شروع کار با Hibernate، باید چندین مرحله را دنبال کنید. در ادامه، این مراحل را به شما توضیح میدهیم.
۱. افزودن وابستگیهای Hibernate به پروژه
ابتدا باید وابستگیهای Hibernate را به پروژه خود اضافه کنید. اگر از ابزار Maven استفاده میکنید، میتوانید وابستگیهای زیر را به فایل pom.xml خود اضافه کنید:
<dependency>
<groupid>org.hibernate</groupid>
<artifactid>hibernate-core</artifactid>
<version>5.4.30.Final</version>
</dependency>
<dependency>
<groupid>javax.persistence</groupid>
<artifactid>javax.persistence-api</artifactid>
<version>2.2</version>
</dependency>
<dependency>
<groupid>org.slf4j</groupid>
<artifactid>slf4j-api</artifactid>
<version>1.7.30</version>
</dependency>
<dependency>
<groupid>org.slf4j</groupid>
<artifactid>slf4j-simple</artifactid>
<version>1.7.30</version>
</dependency>
۲. پیکربندی فایل Hibernate
بعد از افزودن وابستگیها، باید فایل پیکربندی Hibernate را ایجاد کنید. این فایل به نام hibernate.cfg.xml شناخته میشود و در پوشه src/main/resources قرار میگیرد. یک مثال از این فایل به صورت زیر است:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database</property>
<property name="hibernate.connection.username">your_username</property>
<property name="hibernate.connection.password">your_password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.example.YourEntityClass"></mapping>
</session-factory>
</hibernate-configuration>
۳. ایجاد کلاسهای موجودیت (Entity Classes)
حالا باید کلاسهای موجودیت خود را ایجاد کنید. این کلاسها به جداول پایگاه داده نگاشت میشوند. به عنوان مثال، کلاس زیر یک کلاس موجودیت برای یک جدول کاربر است:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// Getters and Setters
}
۴. ایجاد فایل SessionFactory
برای ارتباط با پایگاه داده، باید یک شیء SessionFactory ایجاد کنید. این کار را میتوانید با استفاده از کلاس Configuration از Hibernate انجام دهید:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void shutdown() {
getSessionFactory().close();
}
}
۵. استفاده از Hibernate برای عملیات CRUD
حالا که پیکربندیها انجام شد، میتوانید از Hibernate برای انجام عملیات CRUD (Create, Read, Update, Delete) استفاده کنید. به عنوان مثال، برای ایجاد یک کاربر جدید میتوانید از کد زیر استفاده کنید:
import org.hibernate.Session;
import org.hibernate.Transaction;
public class Main {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
User user = new User();
user.setUsername("testuser");
user.setPassword("password");
session.save(user);
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
HibernateUtil.shutdown();
}
}
سوالات متداول
۱. Hibernate چیست؟
Hibernate یک فریمورک ORM برای جاوا است که به شما امکان میدهد تا از پایگاه دادههای رابطهای به صورت شیگرا استفاده کنید.
۲. چرا باید از Hibernate استفاده کنم؟
Hibernate مدیریت دادهها را سادهتر میکند، از چندین پایگاه داده مختلف پشتیبانی میکند و به شما کمک میکند تا زمان خود را صرفهجویی کنید.
۳. چگونه میتوانم Hibernate را به پروژه خود اضافه کنم؟
میتوانید وابستگیهای Hibernate را به فایل pom.xml پروژه خود اضافه کنید یا به صورت دستی فایلهای jar مربوطه را دانلود و به پروژه خود اضافه کنید.
۴. چگونه میتوانم کلاسهای موجودیت را در Hibernate تعریف کنم؟
کلاسهای موجودیت در Hibernate با استفاده از انوتیشنهای JPA تعریف میشوند. این کلاسها به جداول پایگاه داده نگاشت میشوند.
۵. چگونه میتوانم عملیات CRUD را با Hibernate انجام دهم؟
میتوانید با استفاده از شیء Session و متدهای آن مانند save، update، delete و get عملیات CRUD را انجام دهید.
کلام نهایی
Hibernate یکی از بهترین ابزارها برای مدیریت پایگاه داده در برنامههای جاوا است. با استفاده از این فریمورک، میتوانید به راحتی و با کارایی بالا دادههای خود را مدیریت کنید. این مقاله به شما یک نگاه جامع به نحوه کار با Hibernate و استفاده از آن برای انجام عملیات مختلف پایگاه داده ارائه داد. در مکتب خونه انواع دوره آموزش جاوا و آموزش برنامه نویسی به عنوان مکمل این مطلب موجود است.