특정 테이블이 복합키를 가지고 있는 경우 이에 매핑되는 도메인 클래스 내에 Primary Key를 위한 클래스를 정의하셔서 사용하실 수 있습니다.
테이블 'TABLE_USER'는 GROUP_ID와 USER_ID를 Primary Key로 가지고 있으며 이 테이블과 매핑되는 클래스는 'User'라고 가정해 보겠습니다. 이와 같은 경우 User 클래스는 다음과 같이 정의될 수 있습니다.
public class User implements Serializable {
private UserKey userKey;
private String password;
private String address;
// getter, setter ...
}
public class UserKey implements Serializable {
private String groupId;
private String userId;
// getter, setter ...
}
또한 GenericServiceImpl 클래스를 상속받은 비즈니스 서비스는 다음과 같이 정의될 수 있습니다. (필요시 GenericServiceImpl 클래스를 통해 제공되는 메소드를 오버라이드할 수 있습니다.)
public class UserServiceImpl extends GenericServiceImpl implements UserService {
// ....
}
Persistence Layer 처리를 위해 QueryService를 활용하시는 경우 User 클래스와 같이 도메인 클래스가 특정 User defined Object를 포함하고 있다면 QueryService에서 해당 도메인 객체 내에 포함된 내부 객체의 값을 읽고 셋팅할 수 있도록 하기 위해 다음과 같이 정의되어야 합니다.
1. INSERT/UPDATE/DELETE 경우
<query id="...">
<statement>
insert .... into (GROUP_ID, USER_ID, ...)
values (:vo.userKey.groupId, :vo.userKey.userId, ...)
</statement>
...
</query>
2. SELECT 경우
<query id="...">
<statement>
select ...
from USER
where ...
</statement>
<result class="...User">
<result-mapping attribute="{userKey.groupId,userKey.userId}" column="{GROUP_ID, USER_ID}"/>
</result>
Re] 안녕하세요. anyframe GenericService 관련 질문입니다.
특정 테이블이 복합키를 가지고 있는 경우 이에 매핑되는 도메인 클래스 내에 Primary Key를 위한 클래스를 정의하셔서 사용하실 수 있습니다.
테이블 'TABLE_USER'는 GROUP_ID와 USER_ID를 Primary Key로 가지고 있으며 이 테이블과 매핑되는 클래스는 'User'라고 가정해 보겠습니다. 이와 같은 경우 User 클래스는 다음과 같이 정의될 수 있습니다.
public class User implements Serializable { private UserKey userKey; private String password; private String address; // getter, setter ... } public class UserKey implements Serializable { private String groupId; private String userId; // getter, setter ... }또한 GenericServiceImpl 클래스를 상속받은 비즈니스 서비스는 다음과 같이 정의될 수 있습니다. (필요시 GenericServiceImpl 클래스를 통해 제공되는 메소드를 오버라이드할 수 있습니다.)
public class UserServiceImpl extends GenericServiceImpl implements UserService { // .... }Persistence Layer 처리를 위해 QueryService를 활용하시는 경우 User 클래스와 같이 도메인 클래스가 특정 User defined Object를 포함하고 있다면 QueryService에서 해당 도메인 객체 내에 포함된 내부 객체의 값을 읽고 셋팅할 수 있도록 하기 위해 다음과 같이 정의되어야 합니다.
1. INSERT/UPDATE/DELETE 경우
<query id="...">
<statement>
insert .... into (GROUP_ID, USER_ID, ...)
values (:vo.userKey.groupId, :vo.userKey.userId, ...)
</statement>
...
</query>
2. SELECT 경우
<query id="...">
<statement>
select ...
from USER
where ...
</statement>
<result class="...User">
<result-mapping attribute="{userKey.groupId,userKey.userId}" column="{GROUP_ID, USER_ID}"/>
</result>
안녕하세요.
답변해주신데로 적용하였습니다.
좋은 답변 감사합니다.
좋은 하루 되세요.