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.
Nội dung chính
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ó. |