>Java >java지도 시간 >ORM(객체 관계형 매핑)에서 \'소유측\'이란 무엇입니까?

ORM(객체 관계형 매핑)에서 \'소유측\'이란 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-20 02:37:01832검색

What is the

ORM 매핑의 "소유측" 이해

객체 관계형 매핑(ORM)에서 "소유측" 개념은 다음을 의미합니다. 데이터베이스의 외래 키 관계를 관리하는 엔터티입니다. 이는 관계형 데이터베이스가 객체 지향 프로그래밍과 달리 본질적으로 양방향 관계를 지원하지 않기 때문에 발생합니다.

소유 측의 필요성

ORM에서는 소유자 측이 다음을 담당합니다. 관계의 다른 엔터티를 나타내는 외래 키를 소유하여 관계의 무결성을 유지합니다. 소유 측이 없으면 관계의 각 측에 외래 키가 필요하므로 불필요한 연관 테이블과 잠재적인 데이터 중복이 발생합니다.

다양한 관계 유형의 소유권

  • 일대다: 일반적으로 소유측은 하위 테이블에 외래 키를 포함하므로 여러 하위를 허용합니다.
  • 일대일: 일대다와 유사하게 소유측이 외래 키를 보유하고 비소유측이 외래 키를 사용합니다. 관계를 나타내는 mappedBy 속성입니다.
  • 다대일: 소유 측이 외래 키를 보유하므로 여러 엔터티를 허용합니다. 단일 상위 항목을 참조합니다.

예: 소유측을 사용한 일대다 매핑

다음 Java 예를 고려하세요.

@Entity
public class Person {
    @Id
    private Long id;
    @OneToMany(mappedBy = "person")
    private List<IdDocument> idDocuments;
}

@Entity
public class IdDocument {
    @Id
    private Long id;
    @ManyToOne
    private Person person;
}

이 예에서는 Person이 IdDocument 테이블을 참조하는 외래 키를 포함하고 있으므로 소유측입니다. IdDocument의 mappedBy 속성은 관계가 소유 측에서 관리됨을 나타냅니다.

mappedBy 사용의 의미

비소유 측에서 mappedBy를 사용하면 소유측과의 관계를 관리합니다. 이는 다음을 의미합니다.

  • 외래 키 업데이트는 소유측(예: idDocument.setPerson(person))에서만 수행되어야 합니다.
  • Hibernate는 관계에 대한 변경 사항을 추적하지 않습니다. 비소유 측(예: person.getIdDocuments().add(idDocument)).

위 내용은 ORM(객체 관계형 매핑)에서 '소유측'이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.