Hibernate 연합 메 인 키

2596 단어 Hibernate 3 실천
표 에 연합 키 가 존재 한다 면, hibenate 에 서 는 연합 키 를 하나의 클래스 로 봉 한 다음, 실체 클래스 에서 이 연합 키 류 를 참조 합 니 다.연합 메 인 키 류 는 직렬 화, equals 재 작성 및 hashcode 방법 이 필요 합 니 다.
예 를 들 어 Emp 는 id 와 name 두 개의 메 인 키 가 있 습 니 다. 예 를 들 어 다음 과 같 습 니 다.
package com.yy.hibernate.model;

import java.io.Serializable;

public class EmpCompositePK implements Serializable {

	public int id;
	public  String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof EmpCompositePK){
			EmpCompositePK pk = (EmpCompositePK)obj;
			if(this.id==pk.getId()&&this.name.equals(pk.getName()))
				return true;
		}
		return false;
	}

	@Override
	public int hashCode() {
		return this.name.hashCode();
	}
}
Emp. 자바 에서 상기 결합 키 류 의 인용 을 가 져 야 합 니 다. 다음 과 같 습 니 다.
private EmpCompositePK pk;
Emp. hbm. xml 설정 파일 에서 홈 키 는 다음 과 같이 정의 합 니 다.

		
		

연합 키 설정 이 완료 되 었 습 니 다.
다음은 Annotation 방식 으로 설정 합 니 다.
방식 1:
연합 키 클래스 에 @ Embeddable 주 해 를 사용 합 니 다:
package com.yy.hibernate.model;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
public class EmpCompositePK implements Serializable {

	public int id;
	public  String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof EmpCompositePK){
			EmpCompositePK pk = (EmpCompositePK)obj;
			if(this.id==pk.getId()&&this.name.equals(pk.getName()))
				return true;
		}
		return false;
	}

	@Override
	public int hashCode() {
		return this.name.hashCode();
	}
}
실체 적 으로 @ Id 사용
private EmpCompositePK pk;
	
	@Id
	public EmpCompositePK getPk() {
		return pk;
	}

	public void setPk(EmpCompositePK pk) {
		this.pk = pk;
	}
방식 2:
실체 클래스 에서 다음 과 같은 주 해 를 직접 사용 합 니 다.
	@EmbeddedId
	public EmpCompositePK getPk() {
		return pk;
	}
방식 3:
실체 에 다음 주 해 를 사용 합 니 다.
@IdClass(EmpCompositePK.class)
실체 류 의 id 와 name 의 getXXX 방법 에 @ Id 주 해 를 동시에 추가 합 니 다.
메모: 홈 키 류 를 결합 하 는 것 이 필요 합 니 다.

좋은 웹페이지 즐겨찾기