Hibernate - Phiên

Phiên được sử dụng để có được kết nối vật lý với cơ sở dữ liệu. Đối tượng Session có trọng lượng nhẹ và được thiết kế để khởi tạo mỗi khi cần tương tác với cơ sở dữ liệu. Các đối tượng cố định được lưu và truy xuất thông qua một đối tượng Session.

Các đối tượng phiên không nên được mở trong một thời gian dài vì chúng thường không an toàn cho luồng và chúng phải được tạo và hủy chúng khi cần thiết. Chức năng chính của Session là cung cấp, tạo, đọc và xóa các thao tác cho các trường hợp của các lớp thực thể được ánh xạ.

Các phiên bản có thể tồn tại ở một trong ba trạng thái sau tại một thời điểm nhất định -

  • transient - Một phiên bản mới của lớp liên tục, không được liên kết với Session và không có đại diện trong cơ sở dữ liệu và không có giá trị định danh nào được coi là tạm thời bởi Hibernate.

  • persistent- Bạn có thể làm cho một phiên bản tạm thời tồn tại lâu dài bằng cách liên kết nó với một Phiên. Một cá thể liên tục có một đại diện trong cơ sở dữ liệu, một giá trị định danh và được liên kết với một Phiên.

  • detached - Khi chúng ta đóng Phiên ngủ đông, phiên bản liên tục sẽ trở thành một phiên bản tách rời.

Một cá thể Session có thể tuần tự hóa nếu các lớp liên tục của nó có thể tuần tự hóa. Một giao dịch điển hình nên sử dụng thành ngữ sau:

Session session = factory.openSession();
Transaction tx = null;

try {
   tx = session.beginTransaction();
   // do some work
   ...
   tx.commit();
}

catch (Exception e) {
   if (tx!=null) tx.rollback();
   e.printStackTrace(); 
} finally {
   session.close();
}

Nếu Phiên ném một ngoại lệ, giao dịch phải được khôi phục và phiên phải bị hủy.

Phương thức giao diện phiên

Có một số phương pháp được cung cấp bởi Sessionnhưng tôi sẽ chỉ liệt kê một vài phương pháp quan trọng mà chúng tôi sẽ sử dụng trong hướng dẫn này. Bạn có thể kiểm tra tài liệu Hibernate để biết danh sách đầy đủ các phương pháp được liên kết vớiSessionSessionFactory.

Sr.No. Phương pháp & Mô tả phiên
1

Transaction beginTransaction()

Bắt đầu một đơn vị công việc và trả về đối tượng Giao dịch được liên kết.

2

void cancelQuery()

Hủy việc thực thi truy vấn hiện tại.

3

void clear()

Hoàn toàn xóa phiên.

4

Connection close()

Kết thúc phiên bằng cách giải phóng kết nối JDBC và dọn dẹp.

5

Criteria createCriteria(Class persistentClass)

Tạo một cá thể Tiêu chí mới, cho lớp thực thể đã cho hoặc lớp cha của một lớp thực thể.

6

Criteria createCriteria(String entityName)

Tạo một phiên bản Tiêu chí mới, cho tên thực thể đã cho.

7

Serializable getIdentifier(Object object)

Trả lại giá trị định danh của thực thể nhất định được liên kết với phiên này.

số 8

Query createFilter(Object collection, String queryString)

Tạo một phiên bản mới của Truy vấn cho chuỗi bộ lọc và bộ sưu tập đã cho.

9

Query createQuery(String queryString)

Tạo một phiên bản mới của Truy vấn cho chuỗi truy vấn HQL đã cho.

10

SQLQuery createSQLQuery(String queryString)

Tạo một phiên bản SQLQuery mới cho chuỗi truy vấn SQL đã cho.

11

void delete(Object object)

Xóa một phiên bản liên tục khỏi kho dữ liệu.

12

void delete(String entityName, Object object)

Xóa một phiên bản liên tục khỏi kho dữ liệu.

13

Session get(String entityName, Serializable id)

Trả về phiên bản liên tục của thực thể đã đặt tên với số nhận dạng đã cho hoặc null nếu không có phiên bản liên tục như vậy.

14

SessionFactory getSessionFactory()

Nhận nhà máy phiên đã tạo phiên này.

15

void refresh(Object object)

Đọc lại trạng thái của phiên bản đã cho từ cơ sở dữ liệu bên dưới.

16

Transaction getTransaction()

Lấy phiên bản Giao dịch được liên kết với phiên này.

17

boolean isConnected()

Kiểm tra xem phiên hiện có được kết nối không.

18

boolean isDirty()

Phiên này có bất kỳ thay đổi nào phải được đồng bộ hóa với cơ sở dữ liệu không?

19

boolean isOpen()

Kiểm tra xem phiên có còn mở không.

20

Serializable save(Object object)

Duy trì phiên bản tạm thời đã cho, trước tiên chỉ định một số nhận dạng đã tạo.

21

void saveOrUpdate(Object object)

Lưu (Đối tượng) hoặc cập nhật (Đối tượng) đối tượng đã cho.

22

void update(Object object)

Cập nhật cá thể liên tục với số nhận dạng của cá thể tách rời đã cho.

23

void update(String entityName, Object object)

Cập nhật cá thể liên tục với số nhận dạng của cá thể tách rời đã cho.