본문바로가기

닫기

JAVA Data Transfer Object의 활용에 대하여

2022.04.29


작성자 : 개발팀 신혜정 과장

개발팀의 올해 첫 프로젝트 요구사항으로 '자바 프레임웍 변경 및 DTO 사용' 이라는 미션이 주어졌습니다. 
내부 자바 프레임웍 변경은 팀장님께서 진행하시고 DTO 변경은 제가 담당하기로 하였는데요. 
프레임웍 변경 작업과 DTO 변경 건의 중복 내용에 대해 논의하고자 회의를 진행하였습니다. 

[IT KEYWORD TIP]
DTO란 Data Transfer Object의 약자로, 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미하고 
로직을 가지지 않는 순수 데이터 객체 및 getter / setter 메소드만 가진 클래스를 말합니다. 

 
이번 회의의 주제는 '변경과 유효성 검사' 였습니다. 유효성 검사란 데이터가 요구 사항에 충족되었는가를 의미합니다. 
유효성 검사 시 개발 팀 요구사항은 세가지였습니다.
   1) 작성 코드는 직관적이어야 한다.
   2) 검사 실패 처리는 공통에서 한다.
   3) 샘플 페이지 작성
검증을 어떻게 할 것이며 실패처리는 어떻게 할 것인지 등.. 식음을 전폐할 정도로 고민에 고민을 하였습니다.

기존에는 아래 이미지에 주석처리 되어 있는 @NotBlank / @Pattern과 같이 
한 개의 필드에도 원하는 조건을 만족하기 위해서는 여러 개의 Annotation을 작성해야 했습니다.

그래서 내린 결론은 @Valid를 활용해서 필드 검증을 하고 실패는 @ControllerAdvice Exception에서 처리해보자! 라는 목표가 생겼습니다.
바로 기능 변경 작업을 진행하였습니다.

1. 새로운 Annotation(CMHpNo)을 만듭니다.


2. 해당 Annotation의 유효성을 검증하는 클래스를 생성합니다.


상속받은 ConstraintValidator는 ‘javax.validation’에서 제공하는 인터페이스입니다.
해당 인터페이스에서는 initialize와 isValid라는 함수를 상속받을 수 있는데, 이번에는 유효성을 검사하는 isValid함수만 사용하도록 하겠습니다.
원하는 유효성에 부합하지 않을 경우 기존에 생성된 에러 메시지 대신 원하는 메시지를 context에 넣어줍니다.


3. 유효성에 부합하지 않은 경우에 예외처리를 해줍니다.


@ControllerAdvice는 전역에서 발생할 수 있는 예외를 잡아주는 Annotaion이며, @ExceptionHandler로 처리하고 싶은 예외를 잡아줍니다. 그러면 BindingResult에 유효성 검증에 실패한 결과들이 들어있습니다.

기능작업이 끝났으니 실제 사용하는 방법을 알아보도록 하겠습니다.

1. 유효성 검증이 필요한 필드에 새로 만든 Annotation(CMHpNo)을 선언합니다.


여러가지 Annotation을 사용했을 때 보다 직관적이고 간결해진 것이 보입니다.

2. 로직 실행전에 유효성 검증을 하기 위해 @Valid를 선언합니다.


@Valid는 해당 DTO를 유효성 검증을 한다는 의미의 Annotation으로, 만약 이것을 사용하지 않는 경우에는 DTO에 @CMHpNo를 선언해준 경우에도 유효성 검증을 하지 않습니다.

3. 검증 실패 시, 에러메시지 노출을 합니다.




지금까지 기능 변경 및 사용 방법에 대해 알아보았는데요.
이러한 변경 작업을 통해 패턴을 사용한 검증에서 벗어나 사용자 Annotation을 작성하여 직관적이고 간결하게 구성할 수 있으며, 
에러 처리를 공통 Exception으로 작성이 가능하다는 점이 장점입니다. 

이번 작업을 통해 DTO에 대한 개념과 @Valid를 사용한 검증 및 공통 에러처리를 공부할 수 있는 좋은 기회였습니다. 
여러분도 많은 참고가 되셨기를 바랍니다. 

목록으로
맨 위로

개인정보처리취급방침

개인정보 수집 및 이용에 대한 안내

(주)이지미디어(이하 회사)는 이용자의 개인정보보호를 매우 중요시하며, 『정보통신망 이용촉진 및 정보보호에 관한 법률』, 『개인정보보호법』 등 개인정보보호 관련 규정을 준수하고 있습니다.회사는 본 개인정보취급방침을 통하여 이용자에게서 제공 받은 개인정보가 어떠한 용도 및 방식으로 이용되고 있으며, 개인정보보호를 위해 어떤 조치를 취하고 있는지 알려드립니다.
회사의 개인정보취급방침은 다음과 같은 내용을 담고 있습니다.

1. 개인정보의 수집 및 이용 목적
2. 수집하는 개인정보의 항목 및 수집방법
3. 개인정보의 제3자 제공
4. 개인정보의 보유 및 이용기간
5. 개인정보 파기절차와 방법
6. 이용자의 권리, 의무 및 행사방법
7. 개인정보의 기술적/관리적 보호 대책
8. 개인정보 자동수집 장치의 설치/운영 및 거부에 관한 사항
9. 개인정보보호 책임자 및 담당자 
10. 기타 부가방침

1. 개인정보의 수집 및 이용 목적

회사는 다음과 같은 목적을 위해 개인정보를 수집하고 이용합니다.
- 서비스 제공, 콘텐츠 제공, 웹 컨설팅 기초 자료 확보, 마케팅 활용, 상담 신청 처리 등을 위한 원활한 의사소통 경로 확보

2. 수집하는 개인정보의 항목 및 수집방법

회사는 다음과 같은 항목들을 수집하여 처리합니다.
- 필수항목 : 회사명, 담당자명, 핸드폰, 연락처, 이메일

3. 개인정보의 제3자 제공

회사는 이용자의 동의 없이 개인정보를 제3자에게 제공하지 않습니다. 다만, 관련 법령에 의한 경우는 예외로 합니다.

4. 개인정보의 보유 및 이용기간

회사는 원칙적으로 이용자의 개인정보 수집 및 이용목적이 달성되면 지체 없이 파기합니다.
관계법령의 규정에 의하여 보존할 필요가 있는 경우에는 일정기간 동안 보존합니다.
- 문의하기 : 1년(정보통신망법)

5. 개인정보 파기절차와 방법

회사가 보유하고 있는 개인정보에 대한 파기절차와 방법은 다음과 같습니다.

ㆍ파기절차 이용자가 견적 문의 등을 위해 입력하신 정보는 목적이 달성된 후 내부 방침 및 기타 관련 법령에 의한 정보보호 사유에 따라(보유 및 이용기간 참조) 일정 기간 저장된 후 파기합니다.

ㆍ파기방법 전자적 파일형태로 저장된 개인정보는 기록을 재생할 수 없는 기술적 방법을 사용하여 삭제합니다. 종이에 출력된 개인정보는 분쇄기로 분쇄하거나 소각을 통하여 파기합니다.

6. 이용자의 권리, 의무 및 행사방법

1) 정보주체는 회사에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
- 개인정보 열람 요구
- 오류 등이 있을 경우 정정 요구
- 삭제 요구
- 처리정지 요구

2) 제1항에 따른 권리 행사는 회사에 대해 서면, 전화, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며 회사는 이에 대해 지체 없이 조치하겠습니다.

3) 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 회사는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.

4) 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.

5) 정보주체는 개인정보보호법 등 관계법령을 위반하여 회사가 처리하고 있는 정보주체 본인이나 타인의 개인정보 및 사생활을 침해하여서는 아니 됩니다.

7. 개인정보의 기술적/관리적 보호 대책

회사는 개인정보보호법 제29조에 따라 이용자의 개인정보가 분실, 도난, 누출, 변조 또는 훼손되지 않도록 다음과 같은 기술적 대책을 마련하고 있습니다.

1) 회사는 해킹이나 컴퓨터 바이러스 등에 의해 이용자의 개인정보가 유출되거나 훼손되는 것을 막기 위해 최선을 다하고 있습니다. 개인정보의 훼손에 대비해서 자료를 수시로 백업하고 있고, 최신 백신프로그램을 이용하여 이용자들의 개인정보나 자료가 누출되거나 손상되지 않도록 방지하고 있으며, 암호화 통신 등을 통하여 네트워크상에서 개인정보를 안전하게 전송할 수 있도록 하고 있습니다.그리고 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있으며, 기타 시스템적으로 보안성을 확보하기 위한 가능한 모든 기술적 장치를 갖추려 노력하고 있습니다.

2) 담당자를 지정해 개인정보를 취급하는 직원을 최소화하며, 이를 위한 별도 비밀번호를 부여해 정기적으로 갱신하고 있습니다. 또한 담당자에 대한 수시 교육을 통하여 개인정보보호 준수를 강조하고 있습니다.

8. 개인정보 자동수집 장치의 설치/운영 및 거부에 관한 사항

회사는 이용자에게 맞춤 서비스 등을 제공하기 위해 이용자의 정보를 수시로 저장하고 불러오는 쿠키(Cookie)를 사용합니다.쿠키란 웹사이트를 운영하는 데 이용되는 서버가 이용자의 컴퓨터 브라우저에 보내는 소량의 정보며, 이용자의 컴퓨터 하드디스크에 저장됩니다. 쿠키는 이용자의 컴퓨터를 식별하지만 이용자 개개인을 식별하지 않습니다.
이용자는 쿠키 설치에 대한 선택권을 가지고 있습니다. 이용자가 사용하는 웹 브라우저의 옵션을 설정함으로써 모든 쿠키를 허용하거나, 쿠키를 저장할 때마다 확인을 거치거나, 모든 쿠키의 저장을 거부할 수 있습니다.

설정 방법의 예

1) Internet Explorer의 경우 : 웹 브라우저 상단의 도구 > 인터넷 옵션 > 개인정보 > 설정

2) Chrome의 경우 : 웹 브라우저 우측의 설정 > 화면 하단의 고급 설정 표시 > 개인정보의 콘텐츠 설정 버튼 > 쿠키

9. 개인정보보호 책임자 및 담당자

이용자는 언제든지 회사에게 개인정보 열람, 수정, 정보삭제, 처리정지를 요청할 수 있습니다. 정보삭제 또는 처리정지를 원하시는 경우 개인정보보호 담당자에게 서면, 전화, 이메일로 연락하시면 신속하게 조치하겠습니다.

개인정보 관리책임자

성명 이지성

직위 이사

E. lezis@easymedia.net

T. 02-869-3434

개인정보 관리담당자

성명 이준상

직위 부장

E. kokojoon@easymedia.net

T. 02-869-3434(108)

기타 개인정보 침해에 관한 상담이 필요한 경우에는 아래 기관에 문의하실 수 있습니다.
- 한국인터넷진흥원 개인정보침해신고센터 (privacy.kisa.or.kr / 국번 없이 118)
- 대검찰청 사이버수사과 (http://www.spo.go.kr / 국번 없이 1301)
- 경찰청 사이버안전국 (http://www.ctrc.go.kr / 국번 없이 182)

10. 기타 부가방침

회사는 본 개인정보취급방침의 내용 추가, 삭제 및 수정을 하는 경우 개정 최소 7일 전 홈페이지에 변경 사유 및 내용을 고지하겠습니다.

- 시행일자 : 2016년 8월 1일
닫기닫기