Many-To-Many 관계를 일대 다 관계로 바꿀 수있는 인터넷 게시물을 읽었습니다. (더 이상 해당 게시물을 찾을 수 없습니다.) 누군가가 모범을 보일 수 있습니까?Nhibernate : 일대 다 관계로 다 대 다 관계를 표현하는 방법?
답변
나는 그 질문에 다가 서서 답을 놓치고 있다는 것을 깨달았다. 그리고 나는 종종이 NHibernate 설명서를 지적하지만, 수치 스럽습니다. 24. Best Practices
이국적인 연관 매핑을 사용하지 마십시오.
실제 다 대다 연관을위한 좋은 사례는 거의 없습니다. 의 대부분은 "링크 테이블"에 저장된 추가 정보가 필요할 때입니다. 이 경우 중간 링크 클래스 에 두 개의 일대 다 연관을 사용하는 것이 훨씬 더 좋습니다. 실제로 우리는 대부분의 협회 이 일대 다 다기간 방식이라고 생각합니다. 다른 협회 스타일을 사용할 때는 조심해야하며 실제로 필요한지 스스로에게 물어보십시오.
23.2. Author/Work 아래의 예를 살펴보십시오. 추출, Author
및 Work
사이의 many-to-many 관계의 단순화 된 버전 :
<class name="Work" table="works" ...>
<id name="Id" column="id" generator="native" />
...
<set name="Authors" table="author_work" lazy="true">
<key>
<column name="work_id" not-null="true"/>
</key>
<many-to-many class="Author">
<column name="author_id" not-null="true"/>
</many-to-many>
</set>
</class>
과 다 대다 대상 저자 :
<class name="Author" table="authors">
...
<set name="Works" table="author_work" inverse="true" lazy="true">
<key column="author_id"/>
<many-to-many class="Work" column="work_id"/>
</set>
</class>
그래서, 우리는 주문하고자하는 경우 작품 세트가로드되면 문제가 발생합니다. 쌍 테이블에는 열이 없습니다. 그러나 더 중요한 것은 그러한 열을 관리하는 방법이 없다는 것입니다.
우리가 할 수있는 일의 쌍 객체 도입하는 것입니다 AuthorWork
를이 우리가 많은 -을 변환 할 수 있습니다 갖는 AuthorWork
<class name="AuthorWork" table="author_work">
...
<many-to-one name="Author" column="author_id" />
<many-to-one name="Workr" column="work_id" />
<property name="OrderBy" />
의
public class AuthorWork
{
public virtual Author Author { get; set; }
public virtual Work Work { get; set; }
public virtual int OrderBy { get; set; }
}
매핑을 필요에 따라 쌍 테이블을 확장 예를 들어 Authors 컬렉션과 같은 일대 다 매핑을 사용합니다.
우리는 엔티티 AuthorWork를 관리하고, OrderBy 열을 설정하며, 따라서 페어링 테이블을 효과적으로 사용할 수 있습니다.
참고 : 문서의 제안에 동의해야합니다. 요구 사항이 많을수록 관계를 관리하는 방법이 더 행복해집니다!
모범 사례 링크가 올라갔습니다 : http://nhibernate.info/doc/nh/en/index.html#example-mappings-authorwork – mcfea
- 1. Django에서 일대 다 관계를 표현하는 방법
- 2. 다 대 다 관계로 업데이트
- 3. SQLAlchemy의 : 일대 다 관계로,
- 4. 데이터베이스에서 다 대 다 관계를 만들려면 어떻게해야합니까?
- 5. Mysql BIgQuery에서 일대 다 관계로
- 6. 데이터베이스에서 다 - 대 - 다 관계를 표현하는 가장 좋은 방법은 무엇입니까?
- 7. discriminator로 NHibernate 일대 다
- 8. nHibernate 일대 다 저장
- 9. NHibernate 일대 다 맵
- 10. NSFetchedResultsController는 일대 다 관계로 정렬됩니다.
- 11. 레일에서 다 대 다 관계로 작업하기 4
- 12. 다 - 대 - 다 관계로 데이터 저장
- 13. 다 대 다 관계로 SQL 결과가 중복됩니다.
- 14. 일대 다 관계로 자식을 삭제하십시오.
- 15. 일대 다 관계로 객체 모델링하기
- 16. NHibernate 일대 다 다중 열
- 17. PHP mySQL 일대 다 대 다 대다기
- 18. 행을 새로운 일대 다 관계로 복사하는 방법
- 19. 코어 데이터에서 일대 다 관계를 얻는 방법
- 20. nHibernate 일대 다 매핑 질문
- 21. 일대 다 및 일대 다 관계
- 22. 대 다 관계로 데이터 지정
- 23. 유창한 nhibernate 일대 다 매핑
- 24. LINQ에서 다 - 대 - 다 관계를 어떻게 수행합니까?
- 25. 어떻게 다 - 대 - 다 관계를 코딩하나요?
- 26. 다 - 대 - 다 관계를 어떻게 관리해야합니까?
- 27. 일대 다 관계를 통해 다 대다 관계를 검색하십시오.
- 28. JP QL - 일대 다 관계로 필터링 결과
- 29. NHibernate 성능과 일대 다 관계
- 30. 일대 다 관계로 grails findAllBy를 수행하는 방법
테이블과 사용할 수업을 설명해주십시오. – cremor
관계형 DBMS는 일반적으로 다 대다 관계를 지원하지 않으므로 이러한 관계는 연결 테이블과 두 개의 일대 다 관계를 사용하여 표시됩니다. 예를 들어'User's와'Role's의 many-to-many 관계는'User one-to-many UserRoles many-to-one role'으로 표현됩니다. Hibernate는 대개 이것을 숨기고 many-to-many relationshops를 투명하게 허용한다. 원하는 경우 항상 연결 테이블을 명시 적으로 매핑하도록 선택할 수 있습니다. 'User','Role' _and_'UserRoles'를 매핑 할 것입니다. 여기에서'UserRoles'는 두개의 many-to-one 관계를 포함합니다 (각각'User'와'Role'). –
(계속)이 경우'User'도'Role'도'UserRoles' 인스턴스의 콜렉션 (일대 다)을 보유 할 필요가 없습니다 (또는 적어도 역으로 될 수 있습니다). 이는 메모리에 콜렉션을 적게로드해야하기 때문에 메모리 사용량을 줄이는 데 유용 할 수 있습니다. 단점은 쿼리가 더욱 복잡해진다는 점입니다. –