2012-11-17 2 views
0

나는 최대 절전 모드에서 일부 클래스를 매핑하려고하는데,이 클래스들은 기본적으로 전략 패턴이다. 나는 추상 메소드 "purchaseSomething()"을 선언하는 추상 클래스 "UserType"을 알고있는 "User"클래스를 가지고 있으며, 서브 클래스는이 메소드를 오버라이드한다. 지금은 모든 클래스를 엔티티로 매핑하므로 세 개의 테이블이 있습니다. 사용자가 시스템에 제출할 때마다 사용자를 지속 시키면 UserType 서브 클래스 인스턴스가 테이블에 저장됩니다. 내가 원하는 것은 "UserTypes"라는 하나의 테이블에 "id"와 "type"콜럼을 두 개 갖고 있기 때문에 모든 "Admin"사용자가 테이블의 같은 행을 가리키고 모든 "Customer"사용자가 같은 행을 대신 테이블 "AdminUser"에 대한 ID "23435"행을 "Admin"사용자가 가리키고 "AdminUser"테이블에 다른 "Admin"사용자가 ID 54234 행을 가리키고 있습니다. .동작이있는 Hibernate 클래스를 매핑하는 방법은 무엇입니까?

감사합니다. 어떤 팁이 유용 할 것입니다.

답변

0

순수한 전략 패턴의 경우 유형을 열거 형으로 설정하고 using the JPA Enumeration annotation으로 설정하는 것이 좋습니다. 전략을 채우기 위해 여전히 give the Enum abstract methods 일 수 있습니다.

그러나 실제로 관리자 및 고객에 대해 별도로 데이터를 저장하려는 것처럼 들릴 수 있습니다. 사용자가 고객 또는 관리자이지만 둘 다 아닌 사용자 인 경우 서브 클래스를 만들고 joined-subclass을 사용하십시오. 사용자가 둘 다일 수 있다면, 일대일 관계 매핑을 원할 수도 있습니다.

+0

감사합니다. 문제가 해결되었습니다. – 4gus71n

관련 문제