728x90
반응형
SMALL
MapStruct
- Java 애플리케이션에서 객체 매핑을 컴파일 타임에 자동으로 생성해주는 라이브러리입니다. 이를 통해 객체 간의 매핑을 효율적으로 수행할 수 있습니다.
- 객체 매핑을 컴파일 타임에 자동으로 생성해주어 성능과 타입 안전성 몇에서 뛰어남.
MapStruct 의존성 추가
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
#롬복과 같이 사용시에 롬복 annotationProcessor 밑에 추가
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
빌더 사용 예시
- UserEntity
@Getter @Entity @DynamicInsert @DynamicUpdate @NoArgsConstructor @Table(name = "users") @FieldDefaults(level = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @Column(nullable = false, length = 50) String username; @Column(nullable = false, unique = true, length = 255) String email; @Column(nullable = false, length = 255) String password; @Builder public User( String username, String email, String password, ){ this.username = username; this.email = email; this.password = password; } }
- UserRequest/UserResponse
@Getter @FieldDefaults(level = AccessLevel.PRIVATE) public class UserRequest { @NotBlank(message = "이름이 없습니다.") String username; @NotBlank(message = "이메일주소가 없습니다.") String email; @NotBlank(message = "패스워드가 없습니다.") String password; } -------------------- @Getter @Builder @NoArgsConstructor @AllArgsConstructor @JsonInclude(Include.NON_NULL) @FieldDefaults(level = AccessLevel.PRIVATE) public class UserResponse { Long id; String username; String email; }
- UserMapper (MapStruct)
@Mapper public interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); //@Mapping(source = "username", target = "username") //빌더를 사용하지 않고, @Mapping 어노테이션으로 수동 사용가능 UserResponse toResponse(User user); User toEntity(UserRequest userDTO); }
- 사용 예시
public void create(UserRequest request) { User userRequest = UserMapper.INSTANCE.toEntity(request); userRepository.save(userRequest); }
728x90
반응형
LIST
'Spring' 카테고리의 다른 글
Spring Cloud MSA (1) | 2025.01.23 |
---|---|
Flyway (1) | 2025.01.02 |
Undertow (1) | 2025.01.02 |
Spring Security 내부 필터 (1) | 2024.10.24 |
Spring Security 내부 흐름 (0) | 2024.10.22 |