ssh 학습: hibenate 관계 맵 (5)

5359 단어
hibenate 에서 다 중 관계
       많은 장면 들 이 여러 쌍 의 관련 관 계 를 사용 할 수 있다.선생님 과 학생 사이
        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>

 

좋은 웹페이지 즐겨찾기