2013-03-23 2 views
0

저는 현재 작업중인 애플리케이션에 Spring JDBC를 사용하고 있는데 문제가 있습니다. 내 도메인 계층에는 필드가 있습니다. 원시 타입들과 객체 연관들. 사람이 자치 도시에 속해있는 경우 :Spring JDBC 일대일 관계

public class Person { 

    private Municipality municipality; 

    // More code 
} 

public class Municipality { 
    // More code 
} 

데이터베이스에서 이것을 기본 + 외래 키로 모델링합니다. 이 경우 person 테이블에는 시정 촌 테이블의 기본 키에 대한 외래 키가 있습니다. 저는 개인과 자치체를위한 저장소를 만들었습니다. 이제 Person을 검색하고 싶지만 동시에 Municipality와 연결하려고합니다.

내가하는 첫 번째 작업은 Person 저장소를 사용하는 사람을 찾는 것입니다. 그런 다음 나는 그 인물에 속한 지방 자치체를 찾고 싶다. 그러나 지금은 내 도메인 개체에 모델링 된 외래 키가 없습니다. 즉, Person 클래스에 private int municipality_id 필드가 없습니다. 이로 인해 도메인 객체가 데이터베이스와 결합됩니다 (적어도 이제는 그것에 대해).

municipality_id를 찾기 위해 다른 쿼리를 실행하면 잘못된 것으로 느껴집니다. 이 문제를 어떻게 해결할 수 있습니까? 그러나 시정촌을 찾으려면 municipality_id가 필요합니다.

+0

모델에 municipalityId를 추가하거나 ORM (JPA, Hibernate 등)을 사용하십시오. 참고 : 모델은 데이터베이스에서 오는 데이터를 나타냅니다. 외래 키 필드가있는 문제는 무엇입니까? –

+0

도메인 계층이 지속성을 위해 데이터베이스를 사용한다는 것을 "알았"습니까? 내 말은, 왜 모델에 외래 키가 있어야할까요? 또는 그것은 okey 다? – LuckyLuke

+0

@ LuckyLuke 모든 도메인 계층은 일부 영구 저장소에서 나중에 가져올 수있는 고유 한 번호로 다른 유형의 엔터티를 식별 할 수 있다는 것을 알고 있습니다. 불행히도 나는 도메인 클래스가 전체적으로 영속성을 갖지 못하게하는 방법에 대해 확신하지 못합니다. – millimoose

답변

1

다음은 가능한 옵션입니다.

  1. 개인 개체에 자치 단체 ID를 포함시킵니다. 이 접근 방식에 문제가있는 것 같습니다. 이것은 나를 괴롭히지 않는다. 나는 단순히 쿼리의 다른 사람 데이터에 따라 id를 다시 가져올 것이다.
  2. 두 번째 쿼리를 실행하여 자치도를 가져온 다음 person 개체에 자치도를 채 웁니다. 나는이 방법에 대해서도 아무런 문제가 없다.
  3. 두 테이블을 함께 결합하고 두 개체에 대한 데이터를 다시 가져옵니다. 당신의 매퍼 (mapper)에서 자치체 객체를 생성하고 그 객체를 사람 객체로 설정합니다.