我正在嘗試了解JPA并且Hibernate我正在嘗試了解一些資料庫術語。
在youtube 上的一段視頻中,老師(2:42)說:
一對多只是單向的。
她說假設這兩個類:
class Person {
List<Address> addresses;
}
class Address {
Person p;
}
她說:
這是一對多。但是地址不能有一個人的集合,因為如果它有一個人的集合,它將是多對多的。
但我認為她是不對的,因為我們可以有這兩個:
thePerson.getAddresses().get(i);
和
anAddress.getPerson();
當我們可以有這兩個陳述句時,它就是Bidirectional。那為什么她說它可以只是單向的?
雙向的確切定義是什么,她得出這樣的結論?
uj5u.com熱心網友回復:
首先,任何關系都可以是單向或雙向的,這完全取決于您希望如何顯示或檢索資料以及您的業務規則。
當我們可以有這兩個陳述句時,它就是雙向的。那為什么她說它可以只是單向的?
like的object oriented方法與在. 她可以很聰明,因為從資料庫的角度來看,默認情況下關系是單向的。ORMsHibernaterelational database
單向和雙向的區別在于您可以從您所在的位置訪問關系另一方的記錄。
雙向的確切定義是什么,她得出這樣的結論?
在您的示例中,我們可以這樣解釋您的關系:
單向:你可以從人那里得到你所有的地址,但不能反過來
class Person { @OneToMany List<Address> addresses; } class Address { // Here you don't add the ManyToOne Person p; }雙向:你可以從一個人那里得到你所有的地址,也可以從一個地址中得到一個人
class Person { @OneToMany List<Address> addresses; } class Address { @ManyToOne Person p; }
看看下面的鏈接:
單向和雙向關系關系的區別
https://www.baeldung.com/spring-data-rest-relationships
什么是物件/關系不匹配
uj5u.com熱心網友回復:
你是對的,她是不對的。各種關系可以是單向的,也可以是雙向的。
在子方面,您必須使用@JoinColumn 注釋該欄位。
在父端,您必須使用 @OneToMany 注釋的屬性 mappedBy。
例子:
@OneToMany(mappedBy = "user")
private List<Address> addresses;
@ManyToOne
@JoinColumn
private User user;
這是一個很好的講座。
https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463285.html
下一篇:使用Prisma獲得唯一的嵌套值
