@JoinColumn
cung cấp Entity
khóa ngoài cho Entity
khác trong khi @JoinTable
sẽ liệt kê mối quan hệ giữa tất cả các mối quan hệ giữa Entity
A và Entity
B. Theo như tôi có thể nói, cả hai đều có vẻ giống nhau. Khi nào tôi nên sử dụng cái này hay cái kia?Khi nào tôi nên sử dụng @JoinColumn hoặc @JoinTable?
Trả lời
Hãy nói rằng bạn có một thực thể A
trong đó có một hiệp hội @ManyToOne
ot một thực thể B
@JoinColumn sẽ xác định các bảng mục tiêu Ngoại chính (ví dụ B_ID
) trong khi sử dụng các bảng mục tiêu Entity (ví dụ B
).
@Entity
public class A {
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
}
@JoinTable sẽ sử dụng một bảng riêng biệt để giữ mối quan hệ giữa A
và B
.
@Entity
public class A {
private Long id;
@ManyToOne
@JoinTable(
name = "A_B",
joinColumns = @JoinColumn(name = "B_ID"),
inverseJoinColumns = @JoinColumn(name = "A_ID")
)
private B b;
}
Lần này không phải A
cũng không B
chứa bất kỳ chính nước ngoài, bởi vì có một bảng riêng biệt (ví dụ A_B
) để giữ mối liên hệ giữa A
và B
.
@JoinTable lưu trữ id của cả hai bảng vào một bảng riêng biệt trong khi @JoinColumn lưu trữ id của bảng khác trong cột mới.
@JoinTable: Đây là loại mặc định. Sử dụng điều này khi bạn cần một cơ sở dữ liệu chuẩn hóa hơn. I E. để giảm dự phòng.
@JoinColumn: Sử dụng tính năng này để có hiệu suất tốt hơn vì không cần phải tham gia thêm bảng.
- 1. Khi nào tôi nên sử dụng Bảng chỉ mục của Oracle? Hoặc, khi tôi không nên?
- 2. django - khi nào tôi nên sử dụng media_root hoặc static_root?
- 3. Khi nào tôi nên sử dụng SynchronousQueue
- 4. Khi nào tôi nên sử dụng GC.SuppressFinalize()?
- 5. Khi nào tôi nên sử dụng adorners?
- 6. Khi nào tôi nên sử dụng ConcurrentSkipListMap?
- 7. Khi nào tôi nên sử dụng AQL?
- 8. Khi nào tôi nên sử dụng require() và khi nào nên sử dụng define()?
- 9. Tôi nên sử dụng IEnumerable hoặc IList?
- 10. JPA manytomany giữ thứ tự danh sách khi đang sử dụng @JoinTable
- 11. Trong Jira Agile khi nào tôi nên sử dụng "Story" và khi nào tôi nên sử dụng "Cải tiến"
- 12. Khi nào tôi nên sử dụng setUpClass và khi __init__?
- 13. Tôi có nên sử dụng std :: default_random_engine hoặc tôi nên sử dụng std :: mt19937?
- 14. Tôi nên sử dụng cái nào? decimal.Add() hoặc "+"
- 15. C# Khi nào tôi nên sử dụng Danh sách và khi nào tôi nên sử dụng danh sách array?
- 16. Khi nào tôi nên sử dụng stdClass và khi nào tôi nên sử dụng một mảng trong mã php oo?
- 17. Khi nào tôi nên sử dụng Gói-Nhập khẩu và khi nào tôi nên sử dụng Yêu cầu-Gói?
- 18. Khi nào tôi nên sử dụng AutoMapper và khi không
- 19. enum hoặc xác định, cái nào tôi nên sử dụng?
- 20. Khi nào tôi nên sử dụng HttpDelete hoặc HttpPut trong ứng dụng asp.net mvc
- 21. Khi nào nên sử dụng os.name, sys.platform hoặc platform.system?
- 22. Khi nào tôi nên sử dụng perror ("...") và fprintf (stderr, "...")?
- 23. Khi nào nên sử dụng TouchableNativeFeedback, TouchableHighlight hoặc TouchableOpacity?
- 24. Khi nào và ở đâu tôi nên sử dụng WCF
- 25. Khi nào tôi nên sử dụng const & này?
- 26. Khi nào tôi nên sử dụng khung HTML?
- 27. Khi nào tôi nên sử dụng Hashtable so với HashMap
- 28. Khi nào tôi nên sử dụng HTML5 Microdata cho SEO?
- 29. Khi nào tôi nên sử dụng toán tử bitwise?
- 30. Khi nào tôi nên sử dụng cú pháp "(function() {...})();"?
do đó, một JoinTable là một mối quan hệ N-N? – julestruong
Trong thuật ngữ cơ sở dữ liệu, đó là một liên kết nhiều-nhiều. Trong trường hợp này, một FK sẽ có một ràng buộc duy nhất để biến nó thành một liên kết một-nhiều với một bảng kết nối. –