ssh 학습: hibenate 관계 맵 (5)
많은 장면 들 이 여러 쌍 의 관련 관 계 를 사용 할 수 있다.선생님 과 학생 사이
hibenate 에 서 는 두 표 사이 에 직접적인 연관 이 없 으 므 로 제3자 표를 통 해 두 표 간 의 관 계 를 확인 해 야 한다.
지구 화 된 실체 대상 중에서 모두 집합 류 를 사용 하여 다른 대상 을 포장한다.
Xxx. hbm. xml 에서:
집합 한 탭 에서 제3자 표 양쪽 의 표를 만 들 려 면 일치 해 야 합 니 다.
< key > < / key > 서브 시트 서명 으로 외부 키 필드 이름 을 설명 합 니 다.
< many - to - many > < / many - to - many > 하위 탭 을 사용 하여 여러 쌍 의 관련 관 계 를 실현 합 니 다. class 속성 은 다른 경 로 를 말 합 니 다. column 속성 은 다른 표 의 외 키 필드 이름 을 말 합 니 다. 일치 해 야 합 니 다.
선생님 과 학생 의 이전 관 계 를 예 로 들 면:
Javabean 영구 화 대상:
학생 류
public class Student {
private int id;
private String name;
private Set<Teacher> teachers;
// get/set
}
교사 류
public class Teacher {
private int id;
private String name;
private Set<Student> students;
// get/set
}
student. hbm. xml 설정:
<hibernate-mapping>
<class name="com.usc.geowind.lilin.bean.manyToMany.Student"
table="Student">
<!-- type name -->
<id type="integer" name="id">
<!-- ID native -->
<generator class="native" />
</id>
<property name="name" column="name"></property>
<!-- , -->
<!-- table -->
<set name="teachers" table="ST">
<!-- -->
<key column="student_id"></key>
<!-- ,class , column , -->
<many-to-many class="com.usc.geowind.lilin.bean.manyToMany.Teacher"
column="teacher_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
teach. hbm. xml 설정:
<hibernate-mapping>
<class name="com.usc.geowind.lilin.bean.manyToMany.Teacher"
table="Teacher">
<!-- type name -->
<id type="integer" name="id">
<!-- ID native -->
<generator class="native" />
</id>
<property name="name" column="name"></property>
<!-- , -->
<!-- table -->
<set name="students" table="ST">
<!-- -->
<key column="teacher_id"></key>
<!-- ,class , column , -->
<many-to-many class="com.usc.geowind.lilin.bean.manyToMany.Student"
column="student_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
2. 제3자 실 체 를 사용 하여 여러 쌍 의 관련 관 계 를 실현 한다.
두 대상 간 에 집합 하 는 방식 으로 상대방 의 실 체 를 밀봉 하고 제3자 의 실체 에서 이 두 실 체 를 응용 한다.
삼자 간 의 관련 관계: 양자 실체 와 제3자 실체 간 은 모두 한 쌍 이 많은 관련 관계 이 고 제3자 실체 와 이 양자 간 은 모두 일대일 의 관련 관계 이다.
아니면 선생님 과 학생 간 의 다 중 관계, 1 STB 를 제3자 실체 로 예 를 들 면:
Student:
public class Student2 {
private int id;
private String name;
private Set<Teacher2> teachers;//
// get/set
}
Teacher:
public class Teacher2 {
private int id;
private String name;
private Set<Student2> students;//
// get/set
}
STB:
public class STB {
private int id;
private Student2 student;
private Teacher2 teacher;
// get/set
}
Xxx. hbm. xml 설정:
Student. hbm. xml 부분 설정:
<set name="teachers" >
<!-- -->
<key column="student_id"></key>
<!-- class -->
<one-to-many class="com.usc.geowind.lilin.bean.manyToMany.STB"/>
</set>
Teacher. hbm. xml 중간 설정:
<set name="students">
<!-- -->
<key column="teacher_id"></key>
<!-- class -->
<one-to-many class="com.usc.geowind.lilin.bean.manyToMany.STB" />
</set>
STB.hbm.xml:
<hibernate-mapping>
<class name="com.usc.geowind.lilin.bean.manyToMany.STB"
table="STB">
<!-- type name -->
<id type="integer" name="id">
<!-- ID native -->
<generator class="native" />
</id>
<!-- -->
<many-to-one name="student" column="student_id"></many-to-one>
<many-to-one name="teacher" column="teacher_id"></many-to-one>
</class>
</hibernate-mapping>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.