Search
📄

Record 와 DTO

태그
분류
Spring Boot

Record 란 뭘까?

불변 데이터를 쉽게 선언하고 사용할 수 있도록 해주는 특수한 형태의 클래스입니다. 이는 record 가 필드, 생성자, equals(), hashCode(), toString() 메소드를 자동으로 생성해주기 때문이죠. 따라서 코드를 간결하게 유지 할 수 있다는 장점이 있습니다.
// record 선언 public record SMSMessageDTO(String username, String phoneNumber) {} // 사용 public void verificationUser(SMSMessageDTO smsMessageDTO){ // builder 패턴을 사용할 필요없이 간단하게 사용 가능 합니다. String username = smsMessageDTO.username(); String phoneNumber = smsMessageDTO.phoneNumber(); Optional<User> user = userRepository.findUserByUsernameAndPhoneNumber(username, phoneNumber); if(user.isPresent()) { throw new EntityExistsException(); } }
Java
복사
하지만 record 의 경우 상태가 생성시에 결정되고 이후에 변경할 수 없습니다. 따라서 상태를 변경하는 등의 custom 이 필요한 경우 DTO 를 사용해야 합니다. 특정 필드에 패턴을 걸거나, 유저의 특정 부분만 변경해야할 경우를 예로들 수 있습니다.
@Getter @Builder @NoArgsConstructor @AllArgsConstructor public class SignUpRequest{ private String email; @Pattern(regexp = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).{8,}$") private String password; private String nickname; private String username; private String birthday; private String phoneNumber; }
Java
복사