Getter와 Setter는 편리함을 주지만, 객체지향의 장점인 캡슐화를 방해하여 보안에 문제를 주거나 데이터가 예상치 못하게 바뀌어 지속성에 문제를 줄 수 있습니다.
따라서 최대한 Getter와 Setter를 지양하고자 기존에 사용하던 Getter와 Setter를 사용하는 대신 Builder패턴으로 최대한 변경해 보고자 합니다.
앞으로 프로젝트들을 진행하며 Getter과 Setter 대신 Builder를 사용하게 될 경우 이곳에 정리할 예정입니다.1. 엔티티와 DTO
기존 코드
@Builder public class ResponseMainPageDto { private String nickname; private int location; private int level; private int exp; public static ResponseMainPageDto from(User user){ return ResponseMainPageDto.builder() .nickname(user.getNickname()) .location(user.getLocation()) .level(user.getLevel()) .exp(user.getExp()) .build(); } }User객체의 정보중 일부를 DTO로 반환하기 위하여 User 엔티티에 Getter를 사용하였습니다.
Getter를 사용하지 않기 위하여 해당 DTO에서 from메소드를 삭제하고, User객체에 다음의 코드를 추가하였습니다.User객체에 코드 추가
@Entity @Builder public class User { ... public static ResponseMainPageDto to(User user){ return ResponseMainPageDto.builder() .nickname(user.nickname) .location(user.location) .level(user.level) .exp(user.exp) .build(); } }이제 User 엔티티에서 Getter를 사용하지 않고, DTO를 User 엔티티를 통하여 생성하도록 하였습니다.