11/08/2018, 18:49

Các O/R mapping trong Hibernate

Ví dụ về Hibernate Cho đến nay, chúng ta đã thấy việc mapping O/R cơ bản rất đơn giản bằng cách sử dụng hibernate nhưng có 3 chủ đề O/R mapping trong Hibernate quan trọng nhất mà chúng ta phải tìm hiểu chi tiết. Đó là việc mapping về collections, mapping về liên kết giữa các lớp ...

Ví dụ về Hibernate

Cho đến nay, chúng ta đã thấy việc mapping O/R cơ bản rất đơn giản bằng cách sử dụng hibernate nhưng có 3 chủ đề O/R mapping trong Hibernate quan trọng nhất mà chúng ta phải tìm hiểu chi tiết. Đó là việc mapping về collections, mapping về liên kết giữa các lớp entity và các Component Mapping.

Collections Mappings

Nếu một entity hoặc lớp có một tập các giá trị trong một biến Collection cụ thể, thì chúng ta có thể ánh xạ các giá trị đó bằng bất kỳ một trong các interface collections có sẵn trong java. Hibernate có thể persist các thể hiện của java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List và bất kỳ mảng nào của các entity hoặc giá trị persistent.

Kiểu Collection Mapping và môt tả
java.util.Set Điều này được ánh xạ với một phần tử <set> và được khởi tạo với java.util.HashSet
java.util.SortedSet Điều này được ánh xạ với một phần tử <set> và được khởi tạo với java.util.TreeSet. Thuộc tính sort để định nghĩa một tập được sắp xếp hoặc không.
java.util.List Điều này được ánh xạ với một phần tử <list> và được khởi tạo với java.util.ArrayList
java.util.Collection Điều này được ánh xạ với một phần tử <bag> or <ibag> và được khởi tạo với java.util.ArrayList
java.util.Map Điều này được ánh xạ với một phần tử <map> và được khởi tạo với java.util.HashMap
java.util.SortedMap Điều này được ánh xạ với một phần tử <map> và được khởi tạo với java.util.TreeMap. Thuộc tính sort để định nghĩa một tập được sắp xếp hoặc không.

Mảng được Hibernate hỗ trợ với <primitive-array> cho các kiểu giá trị Java nguyên thủy và <array> cho các kiểu dữ liệu khác. Tuy nhiên, chúng hiếm khi được sử dụng.

Nếu bạn muốn mapping các kiểu collection do người dùng định nghĩa mà không được Hibernate hỗ trợ trực tiếp, bạn cần phải nói với Hibernate về ngữ nghĩa của các collection tuỳ chỉnh của bạn. Điều này không dễ dàng và không nên sử dụng.

Association Mappings

Việc ánh xạ các liên kết giữa các lớp entity và các mối quan hệ giữa các bảng chính là linh hồn của ORM. Dưới đây là 4 kiểu liên kết:

Kiểu Mapping Mô tả
Many-to-One Mapping mối quan hệ many-to-one trong Hibernate
One-to-One Mapping mối quan hệ one-to-one trong Hibernate
One-to-Many Mapping one-to-many relationship using Hibernate
Many-to-Many Mapping mối quan hệ many-to-many trong Hibernate

Component Mappings

Trường hợp một lớp Entity có thể có một tham chiếu đến một lớp khác như là một biến thành viên. Nếu lớp được tham chiếu đó không có vòng đời của chính nó và hoàn toàn phụ thuộc vào vòng đời của lớp thực thể sở hữu, lớp được tham chiếu đó được gọi là lớp Component.

Việc ánh xạ Collection của Component kiểu này cũng tương tự như việc ánh xạ một collection bình thường. Chúng ta sẽ thấy hai ánh xạ này cụ thể với các ví dụ.

Kiểu Mapping Description
Component Mappings Mapping cho một lớp có một tham chiếu đến một lớp khác như là một biến thành viên. Trường hợp này chúng ta sử dụng phần tử <component> để thiết lập sự tồn tại của các thuộc khác của lớp của biến tham chiếu bên trong lớp sở hữu nó.
Bài tiếp theo: Hibernate – Annotations
Ví dụ về Hibernate
0