Việc sử dụng @Embedded
và @Embeddable
Trong Hibernate là gì? Bởi vì mỗi ví dụ tôi tìm thấy trên internet là chèn dữ liệu bên trong của một bảng duy nhất và để làm điều đó bằng cách sử dụng hai lớp khác nhau. Quan điểm của tôi là nếu tôi đang sử dụng một bảng duy nhất thì tôi có thể ánh xạ tất cả các cột bên trong một lớp duy nhất thì tại sao tôi nên sử dụng các lớp khác nhau. và nếu chúng tôi sử dụng hai bảng khác nhau thì có mối quan hệ hibernate one-to-one
và one-to-many
.Tại sao chúng ta sử dụng @Embeddable In Hibernate
Trả lời
Có hai loại đối tượng trong Hibernate
1. Giá trị Object
2. Đối tượng
Value Objects là các đối tượng mà không thể đứng một mình. Lấy ví dụ Address
. Nếu bạn nói địa chỉ, mọi người sẽ hỏi địa chỉ của ai là địa chỉ này. Vì vậy, nó không thể đứng một mình.
Đối tượng thực thể là những người có thể đứng một mình như College
và Student
.
Vì vậy, trong trường hợp đối tượng giá trị, cách ưu tiên là Nhúng chúng vào đối tượng thực thể.
Để trả lời lý do tại sao chúng tôi tạo hai lớp khác nhau: trước hết, đó là khái niệm OOPS mà bạn nên có khớp nối lỏng lẻo và sự gắn kết cao giữa các lớp. Điều đó có nghĩa là bạn chỉ nên tạo các lớp học cho mục đích chuyên ngành. Ví dụ: lớp Student
của bạn chỉ nên có thông tin liên quan đến Student
.
Điểm thứ hai là bằng cách tạo các lớp khác nhau bạn quảng bá khả năng sử dụng lại.
Khi chúng tôi xác định đối tượng giá trị cho lớp thực thể, chúng tôi sử dụng @Embeddable
.
Khi chúng tôi sử dụng đối tượng loại giá trị trong lớp thực thể, chúng tôi sử dụng @Embedded
Một thực thể có thể được nhúng vào một thực thể khác. Các thuộc tính của một thực thể có thể là các thuộc tính chung của nhiều hơn một thực thể. Trong trường hợp này, có thể có một thực thể có thể nhúng. Và thực thể nhúng này có thể được nhúng vào nhiều hơn một thực thể.
Hãy xem xét một ví dụ. Chúng tôi có một thực thể Animal
, trong đó có các thuộc tính name
và location
. Bây giờ hai thực thể khác nhau Lion
và Elephant
có thể có các thuộc tính Animal
chỉ bằng cách nhúng thực thể Animal
. Chúng ta có thể ghi đè lên các thuộc tính. Trong thực thể Animal
có thuộc tính location
và trong Elephant
có thuộc tính place
. Vì vậy, với sự giúp đỡ của @AttributeOverrides
chúng ta có thể làm như dưới đây:
@AttributeOverrides({ @AttributeOverride(name = "location", column = @Column(name = "place")) })
Điều này có vẻ giống như một bài diễn văn của https://www.concretepage.com/hibernate/example-embeddable-embedded-hibernate-annotation. Nếu có, tôi nghĩ bạn nên thêm một tham chiếu đến bài viết đó hoặc bằng cách nào đó đánh dấu nó như một báo giá. – Hervian
- 1. Tại sao chúng ta sử dụng Response.ClearHeaders()?
- 2. Tại sao chúng ta sử dụng setLayoutParams?
- 3. Tại sao chúng ta sử dụng tf.name_scope()
- 4. tại sao chúng ta không nên sử dụng ++ trong javascript?
- 5. Tại sao chúng ta nên sử dụng mã hóa ui khi chúng ta có Specflow?
- 6. Tại sao chính xác chúng ta sử dụng NoSQL?
- 7. Tại sao chúng ta sử dụng giao diện thành viên?
- 8. tại sao sử dụng Retrofit khi chúng ta có OkHttp
- 9. Tại sao chúng ta sử dụng động Proxy
- 10. Tại sao chúng ta cần sử dụng cơ số?
- 11. Tại sao chúng ta sử dụng chú thích ngủ đông?
- 12. Tại sao chúng ta sử dụng radian trong lập trình?
- 13. Hibernate Embeddable Inheritance
- 14. Tại sao chúng ta cần strdup()?
- 15. Tại sao chúng ta cần ng-click?
- 16. mongodb tại sao chúng ta cần getSisterDB
- 17. Tại sao chúng ta viết cửa sổ.?
- 18. Tại sao chúng ta cần sợi
- 19. Tại sao chúng ta tái cấu trúc?
- 20. Tại sao chúng ta cần Control.Lens.Reified?
- 21. MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
- 22. Tại sao nên sử dụng id khi chúng ta có thể sử dụng NSObject?
- 23. Tại sao chúng ta cần Anaconda khi chúng ta có pip?
- 24. tại sao chúng ta gọi in sau khi nhập print_function (bằng Python 2.6)
- 25. Tại sao chúng ta cần JWT khi chúng ta có phiên khách hàng?
- 26. Tại sao chúng ta nên sử dụng sp cho kích thước phông chữ trong Android?
- 27. Tại sao chúng ta không thể tạo đối tượng ostream của chúng ta
- 28. MIPS: Tại sao chúng ta cần tải byte khi chúng ta đã có từ tải?
- 29. Tại sao nên sử dụng Hibernate/nHibernate?
- 30. Tại sao chúng ta có thể sử dụng `std :: move` trên đối tượng` const`?
bây giờ tôi hiểu được logic để tạo hai lớp khác nhau, tôi đã suy nghĩ Embedded và nhúng chỉ áp dụng cho một bảng duy nhất? hoặc nó có thể được sử dụng cho nhiều bảng – NaN
Tôi chưa bao giờ thử nhưng tôi tin rằng chúng tôi có thể sử dụng, vì tôi không thể thấy bất kỳ tác hại trực tiếp nào vào nó – ankit
Sự phụ thuộc vào các đối tượng khác chỉ là một chỉ báo không phải là bằng chứng. Ví dụ: Địa chỉ có thể được tái sử dụng và được mô hình hóa dưới dạng thực thể hoặc các thành phần/tập hợp nói chung. –