HƯỚNG DẪN SỬ DỤNG HIBERNATE FRAMEWORK

Trong những bài viết trước bọn họ đang thuộc tò mò những định nghĩa về JPA cùng Hibernate. Trong bài xích này, chúng ta vẫn thuộc tìm hiểu giải pháp setup với áp dụng Hibernate.

Bạn đang xem: Hướng dẫn sử dụng hibernate framework

Để áp dụng Hibernate, họ vẫn lần lượt tiến hành các bước sau:

Tạo maven project.Khai báo thỏng viện Hibernate và thư viện JDBC ứng cùng với một số loại database đề nghị sử dụng.Tạo các Entity với những mapping.Tạo file cấu hình Hibernate.Tạo đối tượng người sử dụng SessionFactorySử dụng SessionFactory để thực hiện các câu lệnh truy vấn đến database.

Cài đặt Hibernate

Tạo maven project và trong tệp tin pom.xml khai báo thỏng viện Hibernate 5, với tlỗi viện JDBC tương ứng cho những nhiều loại Database khác nhau MySquốc lộ, PostgreSQL, Oracle, SQL Server, …

Trong bài xích này, tôi sẽ sử dụng database MySquốc lộ. Nội dung tệp tin pom.xml nhỏng sau:

4.0.0com.earlsdaughter.comHibernateTutorial0.0.1-SNAPSHOTjarHibernateTutorialhttp://maven.apabịt.orgUTF-81.81.8org.projectlomboklombok1.18.10org.hibernatehibernate-core5.4.7.Finalmysqlmysql-connector-java8.0.17junitjunit3.8.1test

Tạo những Entity với các mapping

Tiếp theo chúng ta sẽ khởi tạo những Enity. Mỗi Entity đã thay mặt cho một bảng vào database.

Giả sử tôi tất cả một table user cùng với kết cấu nhỏng sau:

*

Nội dung tệp tin nàgiống hệt như sau:

com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/gp_system?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8root4org.hibernate.dialect.MySQL5Dialectthreadorg.hibernate.cache.internal.NoCacheProvidertrue

Tạo đối tượng người dùng SessionFactory

Như đã trình làng làm việc nội dung bài viết trước, SessionFactory là một trong interface góp tạo ra session kết nối đến database bằng phương pháp đọc những thông số kỹ thuật vào Hibernate configuration.

SessionFactory là đối tượng nặng trĩu (heavy weight object) và được sử dụng thường xuyên buộc phải chúng ta sẽ tạo một class singleton HibernateUtils để áp dụng về sau.

HibernateUtils.java

package com.earlsdaughter.com.utils;import org.hibernate.SessionFactory;import org.hibernate.boot.Metadata;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.service.ServiceRegistry;public class HibernateUtils private static final SessionFactory sessionFactory = buildSessionFactory();private HibernateUtils() super();private static SessionFactory buildSessionFactory() ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() //.configure() // Load hibernate.cfg.xml from resource folder by mặc định.build();Metadata metadata = new MetadataSources(serviceRegistry).getMetadataBuilder().build();return metadata.getSessionFactoryBuilder().build();public static SessionFactory getSessionFactory() return sessionFactory;public static void close() getSessionFactory().close();

Sử dụng SessionFactory để thực hiện các câu lệnh truy tìm vấn mang đến database

Chúng ta đang chuẩn bị không hề thiếu phần lớn thứ, công việc bây giờ là sử dụng thôi.

Trước hết, bọn họ đề xuất mtại một session để gia công câu hỏi với Hibernate:

Session session = HibernateUtils.getSessionFactory().openSession();Để ban đầu thao tác, bọn họ sẽ mở 1 Transaction mới:

session.beginTransaction();Truy vấn database: Hibernate hỗ trợ các cách để truy vấn database, trong bài này chúng ta sẽ thực hiện Hquốc lộ nhằm truy vấn database. Hquốc lộ có một ít khác biệt cùng với SQL:

SQL: Truy vấn tài liệu bên trên những table và column.HQL: Truy vấn dữ liệu bên trên những entity cùng property.

Xem thêm: Hướng Dẫn Kiểm Tra Các Dịch Vụ Đang Sử Dụng Vina Phone Nhanh

Sau lúc đang thực hiện ngừng, chúng ta đề xuất Gọi commit() để giữ phần lớn chuyển đổi xuống database.

session.getTransaction().commit();lấy ví dụ như dưới đã triển khai những thao tác: Insert, Update, Delete, Count, Select dữ liệu của database.

package com.earlsdaughter.com;import java.util.Date;import java.util.List;import org.hibernate.Session;import com.earlsdaughter.com.entities.User;import com.earlsdaughter.com.utils.HibernateUtils;public class HibernateExample1 public static void main(String<> args) try (Session session = HibernateUtils.getSessionFactory().openSession();) // Begin a unit of worksession.beginTransaction();// Insert userDate currentDate = new Date();User user1 = new User();user1.setFullname("Hibernate Example");user1.setUsername("earlsdaughter.com");user1.setPassword("123456"); // Should encode passworduser1.setCreatedAt(currentDate);user1.setModifiedAt(currentDate);Long userId = (Long) session.save(user1);System.out.println("User id = " + userId); // Count user from databaseLong numberOfUser = session.createQuery("SELECT COUNT(id) FROM User", Long.class).uniqueResult();System.out.println("Number of user in database: " + numberOfUser);// Get user by idUser savedUser = session.find(User.class, userId);System.out.println("savedUser: " + savedUser);// Update usersavedUser.setFullname("GPhường. Coder");session.update(savedUser);// Get usersList users = session.createQuery("FROM User", User.class).list();users.forEach(System.out::println);// Delete usersession.delete(savedUser);// Count user from databasenumberOfUser = session.createQuery("SELECT COUNT(id) FROM User", Long.class).uniqueResult();System.out.println("Number of user in database: " + numberOfUser);// Commit the current resource transaction, writing any unflushed changes to lớn the database.session.getTransaction().commit();Một số thủ tục được sử dụng:

save() : insert một entity vào database. Pmùi hương thức này trả về id của record đã được save sầu.update() : update entity vào database.delete() : xóa entity ngoài database.createQuery() : tạo câu lệnh query đến database.find() : tìm kiếm entity nhờ vào id được cung ứng.

Chạy công tác trên, chúng ta có hiệu quả nlỗi sau:

Hibernate: insert inkhổng lồ user (created_at, fullname, modified_at, password, username) values (?, ?, ?, ?, ?)User id = 1Hibernate: select count(user0_.id) as col_0_0_ from user user0_Number of user in database: 1savedUser: User(id=1, fullname=Hibernate Example, username=earlsdaughter.com, password=123456, createdAt=Sat Oct 26 00:04:47 ICT 2019, modifiedAt=Sat Oct 26 00:04:47 ICT 2019)Hibernate: update user set created_at=?, fullname=?, modified_at=?, password=?, username=? where id=?Hibernate: select user0_.id as id1_0_, user0_.created_at as created_2_0_, user0_.fullname as fullname3_0_, user0_.modified_at as modified4_0_, user0_.password as password5_0_, user0_.username as username6_0_ from user user0_User(id=1, fullname=GPhường. Coder, username=earlsdaughter.com, password=123456, createdAt=Sat Oct 26 00:04:47 ICT 2019, modifiedAt=Sat Oct 26 00:04:47 ICT 2019)Hibernate: delete from user where id=?Hibernate: select count(user0_.id) as col_0_0_ from user user0_Number of user in database: 0Như chúng ta thấy, thực hiện Hibernate vấn đề truy tìm vấn database đơn giản và dễ dàng rộng không ít so với áp dụng JDBC API.