2013-04-10 3 views
0

다른 DB 테이블에 대한 파서를 작성 중입니다. 우리는 이클립스에서 Hibernate를 사용하고 있으며 우리의 .java 파일이 테이블과 일치하여 생성되도록 테이블에 대응하는 매핑 파일을 hbm.xml으로 만들었습니다.생성 된 pojos에 대한 전략 패턴 구현

일반 사용자 물건 (주소 이름 전화 번호 # 등)이 포함 된 게이머라는 새로운 표가 추가되었습니다. 그것은 확립 된 Customer 테이블 (주소 이름 phone # etc도 포함)과 관련이 없지만 유효성 검사 단계에서 많은 공유 동작이 있습니다.

나는 이것이 전략 디자인 패턴을 적용하는 데 익숙 할 것이라고 생각한다. 문제는 고객 POJO와 게이머 POJO가 아무 것도 상속받지 않으며 독립되지 않은 관련 테이블에서 정의되고 있다는 것이다.

저는 패턴을 디자인하기가 매우 쉽습니다. 나는 완전히 바보 스럽기 때문에 CustomerAddressValidator와 GamerAddressValidator를 사용하지 않고도 밸리데이션 로직을 공유하고 공유 할 수있는 방법에 대한 제안을하고 있습니다. 똑같은 일을하는 수업.

답변

0

먼저 게이머가 고객인지 아니면 게이머인지 고객이 둘 다 인격인지 구별해야합니다.

두 경우 모두 기본 클래스와 확장 클래스가 있습니다. Hibernate (및 JPA)에는 상속을 처리하는 세 가지 방법이 있습니다 : 단일 테이블, 조인 된 테이블 및 클래스 당 테이블. 세 가지 방법론 모두 단점과 단점이 있으므로 구체적인 도메인 문제를 기반으로 한 방법을 선택해야합니다. 상속에 대해 자세히 알아 보려면 here(JPA)here(Hibernate)을 읽어보세요.

그런 다음 기본 클래스에 대해 하나의 유효성 검사기를 작성할 수 있습니다 (유효성 검사에 필요한 모든 값이 기본 클래스에있는 경우). 기본 클래스와 확장 클래스에 대해 유효성 검사기를 호출합니다.

내가 대답 할 수있는 것처럼, 주소 유효성 검사기가 필요하므로 기본 클래스에 주소를 입력해야합니다. 희망이 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 기본 클래스의 테이블을 인스턴스화해야합니까? – Jimbob

+0

내가 말했듯이 세 가지 상속 전략이 있습니다. 테이블 당 클래스 또는 단일 테이블을 선택하면 기본 클래스에 대한 테이블을 만들 필요가 없으며 조인에 대한 기본 클래스에 대한 테이블이 있습니다. – pedjaradenkovic