Hướng Dẫn Lập Trình Java Hibernate Cho Người Mới Bắt Đầu
vốn là một thư viện sinh ra để làm việc với mọi loại , nó không phụ thuộc vào bạn chọn loại nào. Nếu là thì là
Ở đây tôi tạo một project, và khai báo các thư viện trong.
Trong tôi khai báo thư viện , và các thư viện cho các loại Database khác nhau , và .
Chúng ta tạo các lớp . Mỗi sẽ đại diện cho một bảng trong . Hãy khoan nói về những gì có trong các lớp đó.
- - Phòng ban
- - Nhân viên
- - Bậc lương
- - Máy chấm công, giờ ra vào của nhân viên.
Mục đích là để đọc được vào , cũng như khai báo danh sách các mà bạn đã tạo ở bước trên.
Tập tin được đặt tại
- org.hibernate.dialect.Oracle10gDialect (Oracle 10g &11g)
- org.hibernate.dialect.Oracle12cDialect
- org.hibernate.dialect.SQLServerDialect
- org.hibernate.dialect.SQLServer2012Dialect
- org.hibernate.dialect.SQLServer2008Dialect
- org.hibernate.dialect.MySQLDialect
- org.hibernate.dialect.MySQL5Dialect
Chú ý: được sử dụng cho cả .
Dialect là gì?
là một lớp, nó nói với cách chuyển đổi các kiểu dữ liệu của thành các kiểu dữ liệu của , và ngược lại. Đồng thời nó cũng được sử dụng để định nghĩa cách chuyển đổi giữa các hàm của ( ) thành các hàm của tương ứng.
sử dụng ngôn ngữ ( ) để query dữ liệu. có một chút khác biệt với mà bạn đã biết.
SQL:
- Query (Truy vấn) dữ liệu trên các bảng.
HQL:
- Query (Truy vấn) dữ liệu trên các lớp .
-- SQL -- Đây là một câu lệnh SQL query dữ liệu trên bảng DEPARTMENT. Select d.DEPT_NO, d.DEPT_NAME from DEPARTMENT d; -- HQL -- Đây là một câu lệnh HQL query dữ liệu trên Entity Department. Select d.deptNo, d.deptName from Department d; -- Query Object Select d from Department d;
Nguyên tắc hoạt động của Hibernate:
Ứng dụng của bạn viết các câu lệnh trong thời gian chạy tự biết nó đang làm việc với loại nào, nó sẽ tự chuyển đổi các câu lệnh sang tương ứng với loại đó. Thực tế chúng ta biết rằng cú pháp có sự khác nhau đôi chút giữa các loại khác nhau. Và kiểu dữ liệu cũng vậy.
Có nhiều cách để lấy dữ liệu với . Trong phần này tôi sẽ giới thiệu một vài cách lấy dữ liệu thông dụng.
Ví dụ đầu tiên, sử dụng để query các đối tượng :
Demo2:
Trong trường hợp bạn cần lấy dữ liệu một số cột trên một số bảng, cách tốt nhất là sử dụng . Lớp sẽ có một để khởi tạo các giá trị các trường (field) của nó. này tham gia vào câu lệnh truy vấn .
Đây là ví dụ đơn giản sử dụng để insert một đối tượngvào . Khái niệm đối tượng,,sẽ được giải thích trong ví dụ này.
Một đối tượng trong có 1 trong 4 trạng thái:
- (Tạm thời)
- (Bền vững)
- (Đã bị xóa - dưới DB)
- (Đã bị tách riêng ra - so với session hiện tại)
Transient:
Trường hợp bạn tạo mới một đối tượng từ một , đối tượng đó sẽ có trạng thái là . không biết về sự tồn tại của nó. Nó nằm ngoài sự quản lý của .
Persistent
Trường hợp bạn lấy ra đối tượng thông qua các phương thức bạn có được một đối tượng nó tương ứng với 1 bản ghi dưới database. Đối tượng này có trạng thái . Nó được quản lý bởi .
gọi một trong các phương thức sẽ đẩy đối tượng vào sự quản lý của và đối tượng này chuyển sang trạng thái . Nó tương đương với hành động hoặc trong .
Đối tượng gọi phương thức hoặc để đuổi các đối tượng có trạng thái ra khỏi sự quản lý của , giờ các đối tượng này sẽ có trạng thái mới là (Bị tách ra). Nếu nó không được đính lại ( ), nó sẽ bị bộ gom rác của ( ) loại bỏ theo cơ chế thông thường.
Sử dụng một trong các phương thức: sẽ đưa một đối tượng có trạng thái vào sự quản lý của . Nó tương đương với hành động hoặc dưới . Đối tượng sẽ chuyển sang trạng thái .
Đối tượng gọi phương thức hoặc để xóa một đối tượng (Bản ghi), đối tượng sẽ chuyển sang trạng thái (Đã bị loại bỏ).
Đuổi một đối tượng ra khỏi sự quản lý của
Đuổi tất các các đối tượng ra khỏi sự quản lý của .
Chú ý: Khi đối tượng gọi một trong các phương thức: lúc đó (phiên làm việc) này sẽ kết thúc. Tất cả các đối tượng của này sẽ được coi là đối với một mới.
- update(Object)
- saveOrUpdate(Object)
- merge(Object)
- refresh(Object)
- lock(Object)
phiên bản 2 có phương thức , từ phiên bản 3 trở lên nó đổi tên thành . Chính vì vậy có một chút tương đồng và một chút khác biệt so với .
- không đưa đối tượng vào sự quản lý của nhưng nó tạo ra một bản copy của đối tượng đó và quản lý đối tượng copy.
- Nếu bạn gọi trong khi đã có một đối tượng đang được quản lý bởi và có cùng ID với một ngoại lệ sẽ được ném ra. Trong khi sử dụng sẽ không bị ngoại lệ này.