본문 바로가기

좌충우돌 개발기!/VOC 리팩터링

(3)
[Mapstruct] Dto <-> Entity 변환 시 특정 로직을 실행하여 셋팅(Feat.암호화) 고객 정보의 경우에 DB에 암호화하여 저장하고, 조회 시에는 복호화를 하여 조회해야 한다. 1. Entity -> Dto로 변환 시에는 Dto에 복호화된 값이 셋팅되어야 한다. 2. Dto -> Entity로 변환 시에는 Entity에 암호화된 값이 셋팅되어야 한다. 이러한 기능들을 수행할 때, Dto Entity변환을 위해 Mapstruct를 사용하는데 변환 후에 값이 암/복호화 되어야 한다는 점이 문제였다. Mapstruct 사용 시 이러한 점을 어떻게 해결할 수 있을까? /* Entity */ @Getter @Entity @NoArgsConstructor(access = PROTECTED) @AllArgsConstructor @Builder public class CustomerEntity { @I..
[Mapstruct] Dto -> Entity 변환 시 부모 Entity의 값이 셋팅되지 않는 현상 JPA를 사용하면서 Entity와 Dto를 만들 때마다 생성자를 만들어 값을 셋팅시키는 로직을 만드는게 너무 힘들어 Mapstruct를 사용하게 됐다. 셋팅 후, 상속을 받지 않는 Entity와 Dto가 서로 잘 변환되는 것을 확인했으나 문제는 상속을 받는 Entity를 연결할 때였다. /* 자식 클래스 */ @Getter @Entity @NoArgsConstructor(access = PROTECTED) @AllArgsConstructor public class CounselEntity extends InnerInquiryEntity { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "SEQ_NUM") private Long id; private I..
VOC 리팩터링 프롤로그 현재 상황 현 직장에 처음 이직했을 때, 소스를 보고 1번, 이 소스가 3개월 전부터 만들어지고 있는 리팩터링된 소스라는 것에 2번 놀랐다. 외부업체에서 맡아서 만들었는데, 자신들의 프레임워크를 적용해놓았다고 한다. 이전 소스의 경우, java 6 + Jrun4(WAS 역할)를 사용하였고 그냥 JSP만으로 개발해 놓았던 것을 java 8 + Spring 기반으로 재구성해놓았다고 한다. 그나마 Spring으로 사용했으니 유지/보수가 수월하겠지.. 라고 생각했으나, Spring은 도무지 왜 넣어놓았는지 모르도록 만들어 놓았다. 자세한 히스토리는 잘 모르겠으나, 기간을 맞추기 위해 날림으로 만들어 놓았다는 것이 선명하게 느껴지는 소스였다. 보통은 위와 같은 MVC패턴을 사용하여 어플리케이션을 제작한다. Spr..