질문드립니다.
domain 객체 Member 클래스(회원정보)를 사용하는데
클래스 변수가 가변적으로 사용이되는 경우가 있습니다.
회원가입시에는 password와 passwordRepeat이 필요하구요
일반적일 때에는 passwordRepeat이 필요없습니다.
회원정보수정시에는 password와 passwordRepeat이 필요없습니다.
이런 식으로 특정컬럼이 사용하는 경우에 따라서 필요하거나 필요하지 않은 경우가 발생합니다.
jpa에서는 groups를 지정하여 이런 부분에 대해 해결하라고 되어 있는데
spring에서는 groups옵션에 대한 지원이 안되는 것으로 알고 있습니다.
1. 이런 경우 어떻게 해결을 하시나요?
저같은 경우는 기본 Member 클래스를 만들고 확장해서 MemberForJoin이나 MemberForModify 클래스에서
passwordRepeat변수를 따로 지정할까 했는데요...
entity로 지정할 클래스와 실제 사용시 확장한 domain객체를 나누어 사용하는 것은 올바른 방법이 아닌 것 같습니다..
2. 그래서 다른 방법으로 passwordRepeat 변수를 Member클래스에 넣고
hibernate에서 테이블을 만들 때, 실제 저장 컬럼에서는 제외될 수 있는 annotation이 있는지 궁금합니다.
물론 이것도 좋은 방법이 아닌 것 같습니다.
위 두가지 방법 모두 체크가 변경되는 것에 대해서 일괄 적용이기 때문에
password나 passwordRepeat에 대한 annotation 체크는 제외하고 요청이 들어오는 controller나
service에 책임을 넘겨 처리하게 되는 단점이 있습니다.
위 두가지 정도가 제가 생각해본 방법인데요..
올바른 개발방향에 대해 조언을 부탁드립니다. (__)
감사합니다.
Spring ������ MultipartFile ��ü�� �̷������� �ؼ� �°� �����մϴ�.
JPA Groups ��� ���� �������� �� �� �������? ��� ó�� ��� ���ε� �˻�
�ص� ��� �ÿ���� ������..
2010�� 12�� 27�� 13:34, �Ķ��ϴ� �� ��:
> �ȳ��ϼ���. ����ϸ� �Ҽ��� �� ���� ������.-��-;;;
>
> ��帳�ϴ�.
>
>
> domain ��ü Member Ŭ����(ȸ������)�� ����ϴµ�
> Ŭ���� ������ ���������� ����̵Ǵ� ��찡 �ֽ��ϴ�.
>
> ȸ���Խÿ��� password�� passwordRepeat�� �ʿ��ϱ���
> �Ϲ����� ������ passwordRepeat�� �ʿ����ϴ�.
> ȸ�����������ÿ��� password�� passwordRepeat�� �ʿ����ϴ�.
>
> �̷� ������ Ư���÷��� ����ϴ� ��쿡 ��� �ʿ��ϰų� �ʿ����� ���� ��찡 ���մϴ�.
> jpa������ groups�� �����Ͽ� �̷� �κп� ���� �ذ��϶�� �Ǿ� �ִµ�
> spring������ groups�ɼǿ� ���� ������ �ȵǴ� ������ �˰� �ֽ��ϴ�.
>
> 1. �̷� ��� ��� �ذ��� �Ͻó���?
> ���� ���� �⺻ Member Ŭ������ ����� Ȯ���ؼ� MemberForJoin�̳� MemberForModify Ŭ��������
> passwordRepeat������ ��� �����ұ� �ߴµ���...
> entity�� ������ Ŭ������ ���� ���� Ȯ���� domain��ü�� ������ ����ϴ� ���� �ùٸ� ����� �ƴ� �� �����ϴ�..
>
> 2. ���� �ٸ� ������� passwordRepeat ������ MemberŬ������ �ְ�
> hibernate���� ���̺��� ���� ��, ���� ���� �÷������� ���ܵ� �� �ִ� annotation�� �ִ��� �ñ��մϴ�.
> ���� �̰͵� ���� ����� �ƴ� �� �����ϴ�.
>
> �� �ΰ��� ��� ��� üũ�� ����Ǵ� �Ϳ� ���ؼ� �ϰ� ����̱� ������
> password�� passwordRepeat�� ���� annotation üũ�� �����ϰ� ��û�� ������ controller��
> service�� å���� �Ѱ� ó���ϰ� �Ǵ� ������ �ֽ��ϴ�.
>
> �� �ΰ��� ������ ���� ���غ� ����ε���..
>
> �ùٸ� ���߹�� ���� ������ ��Ź�帳�ϴ�. (__)
>
> �����մϴ�.
>
질문 내용을 보니 JPA에 대한 질문이라기 보다는 Bean Validation (JSR 303)
질문인듯 하네요.
그렇다면 좀 정확히 해야할 것 같은데요. 스프링이 JSR 303 Groups를 아직 지
원하지 않는 건 맞습니다(제가 빨리 해결되기 바라는 부분입니다). 하지만 스
프링이라도 JPA를 쓰는 부분에서조차 Groups를 쓰지 못하게 제한하는 건 아닙
니다. @MVC의 코맨드 객체의 매개변수값 확인(validation) 같이 JPA와 상관
없는 곳에서나 Groups를 못 쓰고 default groups를 적용하게 되는 것이죠.
지금 문제가 되는 부분이 정확히 어느 단계인지 궁금하네요. 도메인 객체를
MVC의 코맨드 객체로 쓰려고 하다보니 문제가 되는 건가요? 그렇지 않다면 별
문제 없이 Groups를 쓰실 수 있을텐데요.
저는 보통 코맨드 객체를 따로 만들어 쓰고 값을 도메인 객체로 복사하는 방
법을 주로 씁니다.
하지만 그렇게 하기엔 코맨드 객체와 도메인 객체가 아주 비슷해서 중복 작업
처럼 생각된다면 JPA에서 Default 그룹 대신 다른 그룹을 쓰도록 설정하고
Default 그룹은 MVC에서 사용하는 방법도 있을 듯 합니다. 도메인 객체가 MVC
때문에 바뀐다는 부분이 마음에 안 들지만 도메인 객체를 웹 단까지 노출한고
있다면 그리 심각한 문제는 아니라고 생각합니다.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
개인적으로 도메인 객체가 controller건 repository건 공용으로 쓸수 있었으면 했거든요.
그러다 보니 영속화 객체의 orm 기능과 validation 기능이 언제나 일원화되서 사용되지 않는 제반사항이 생기더라구
요...
현재로서는 @Transient를 쓰는게 제일 좋을거 같네요.
스프링에서 좀더 annotation을 확장해서 쓸수 있도록 지원해주는 날이 오길 기대해봐야겠네요.
답변글 모두 정말 감사드립니다. (__)
On 12월27일, 오후3시28분, 백기선 <whiteship2...@gmail.com> wrote:
> http://forum.springsource.org/showthread.php?p=292566
>
> <http://forum.springsource.org/showthread.php?p=292566>어떤 사람은 만들어서 썼네요.
>
> 그런데 Validation Groups 기능을 봐도.. 경우에 따라 필요한 필드와 필요없는 필드와 무슨 관계가 있는지 잘 모르겠네요.
> 영속화와 관련된 질문이신 것 같은데.. 델리데이숀의 groups 기능이라.. 흠;.
>
> 저라면 passwordConfirm까지 Member에 넣어두고 손권남님께서 알려주신 @Transient를 붙여놓겠습니다.
>
> 회원 가입시: passwordConfirm과 password 확인
> 일반: password만 영속화
> 회원 수정: 폼에서 password와 passwordConfirm 안 넘겨주면 없을테니 그냥 무시.
>
> 대신 회원 가입시 사용하는 검증 로직과 수정시 사용하는 검증 로직이 다를테니 별도의 벨리데이터를 쓰던가.. 아님 그냥 POJO 벨리데이터
> 만들고 메서드만 다르게 하던지 해서 검증하겠습니다.
>
> Groups 복잡 복잡; @_@;
>
> http://www.jroller.com/eyallupu/entry/jsr_303_beans_validation_using
>
> 2010년 12월 27일 오후 1:34, 파란하늘 <luver...@hanmail.net>님의 말:
> > 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com<ksug%2Bunsu...@googlegroups.com>로
> > 이메일을 보내주세요.
> > 더 많은 옵션을 보려면http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
>
> --
> 좋은 하루 되세요~- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -