Java Desktop Application을 개발하고 지속성을 위해 JPA를 사용하고 있습니다. 나는 문제가 아래에 언급 한 :JPA - 엔티티 디자인 문제
나는 두 기관이 있습니다
- 나라를
- 도시 에게
나라 다음과 같은 속성이 있습니다
- COUNTRYNAME (PK) 을
시는 다음과 같은 속성이 있습니다
- CityName이를
두 개의 서로 다른 나라에서 같은 이름을 가진 두 도시가 될 수 있듯이, DATBASE 도시 테이블에 대한 기본 키가 구성된 복합 기본 키입니다 CityName
및 CountryName
.
지금 내 질문은 우리가City
-Country
의 관계가OneToMany
것을 알고 이제 자바
@Entity
public class Country implements Serializable {
private String countryName;
@Id
public String getCountryName() {
return this.countryName;
}
}
@Entity
public class City implements Serializable {
private CityPK cityPK;
private Country country;
@EmbeddedId
public CityPK getCityPK() {
return this.cityPK;
}
}
@Embeddable
public class CityPK implements Serializable {
public String cityName;
public String countryName;
}
에 Entity
로 City
의 기본 키를 구현하기 위해이 보여 어떻게 관계 위의 코드에서 City
클래스에 country
변수를 추가했습니다. cityPK
객체의 country
객체의 하나 및 기타 :
는하지만 우리는 City
클래스의 객체에 두 장소에 저장된 중복 데이터 (countryName
)가 있습니다.
그러나 다른 한편으로
이 모두 필요하다 : 우리는이 방법으로 복합 기본 키를 구현하기 때문에countryName
cityPK
의 객체가 필요하다.countryName
country
개체간에 relationship을 표시하는 표준 방법이기 때문에 개체가 필요합니다.
이 문제를 해결하는 방법은 무엇입니까? (name
속성을 사용하여) CityPK
에서
이 유형의 문제를 처리하는 표준 방법입니까? 이 문제는 JPA에서 흔히 발생합니까? –
@Yatendra : 예, 표준 방법입니다 (대리 키를 사용하지 않는 경우 피터가 제안한 것처럼). – axtavt