데이터 모델에서 다 대 다 관계가 몇 개 있습니다.많은 관계가 많은 jax-b xml 역 참조
@XmlInverseReference
이 매핑의 역 측에 필요한 : 나는 그러나 나는 많은 관계에 하나 읽었습니다, 데이터 모델의 XML 표현을 얻을 수 JAX = B를 사용하려고 시도하고있다. 나는 이것이 다른 가져 오기 유형 (예 : LAZY 및 EAGER)을 사용하기위한 것이라고 생각합니다. 이 주석이 어떻게 작동하는지 정확히 알지 못합니다. 특정 필드에 데이터가 지정되면 데이터를 가져 오지 않도록 포인터를 사용합니까? 또한 위의 주석과 많은 관계에 많은 주석을 달아야하는지 여부를 알지 못합니다.
다음은 자체와 다 대다 관계가있는 사용자 클래스입니다. 사용자는 다른 많은 사용자와 친구가 될 수 있습니다. getter에 @XmlInverseReference 주석을 추가해야합니까?
@Entity
@Table(name = "users")
public class User implements Serializable {
...
// bi-directional many-to-many association to User
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REFRESH })
@JoinTable(name = "friends", joinColumns = { @JoinColumn(name = "uid") }, inverseJoinColumns = { @JoinColumn(name = "frienduId") })
private List<User> friends;
/**
* @return
*
* gets the list of users this user is friends with
*/
public List<User> getFriends() {
return this.friends;
}
/**
* @param friendsList
*
* sets the users friends list
*/
public void setFriends(List<User> friendsList) {
this.friends = friendsList;
}
도움이나 도움을 주시면 감사하겠습니다.
설명해 주셔서 감사합니다. 나는 귀하의 블로그 항목을 통해 찾고 있으며 그들은 매우 도움이되었습니다. 마지막 질문은 MOXy가 지정되지 않은 경우 (즉, 지연로드) 데이터베이스에서 관계를로드하지 않도록 관계를 지정하는 방법이 있습니까? 많은 양방향 관계가있는 수업을 마샬링하려고하면 성능이 저하 될 수 있다는 두려움이 있습니다. 다시 고맙습니다. –
@ReCoNciLiaTiOn - MOXy (또는 모든 JAXB 구현)가 매핑 한 모든 필드/속성에 액세스합니다. JPA 구현은 일반적으로'get' 메소드의 일부분을 지연로드합니다. '@XmlAccessorType (XmlAccessType.FIELD)'를 사용하여 필드에 매핑하면 원하는 동작을 얻을 수 있습니다 (http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype- to.html). –
좋아요. 이것에 대해 알아 보겠습니다. 고맙습니다. –