반응형
기본적은 MapStruct 설정은 이전글 https://apere.tistory.com/10 을 참고해주세요
이번글에서는 아래처럼 Member와 Team Entity가 관계를 가질경우 MemberDTO에서 Member로 변환시 간단하게 구현하는 방법입니다
public class Team {
@Id
@GeneratedValue
@Column(name = "team_id")
private Long id;
@Column(name = "team_name")
private String teamName;
@JsonIgnore
@OneToMany(fetch = FetchType.LAZY, mappedBy = "team")
private List<Member> members = new ArrayList<>();
}
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
@Column(name = "member_name", nullable = false)
private String memberName;
private int age;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "team_id")
private Team team;
}
위의 코드처럼 Member Entity에 Team 객체가 있기때문에 DTO와 타입 불일치가 일어납니다
public class MemberDTO {
private final String memberName;
private final int age;
private final Long teamId;
}
이런 타입불일치는 MapStruct의 @Mapping 설정으로 간단하게 처리할 수 있습니다
@Mapper(componentModel = "spring")
public interface MemberMapper extends EntityMapper<MemberDTO, Member> {
MemberMapper MAPPER = Mappers.getMapper(MemberMapper.class);
@Override
@Mapping(source = "teamId", target = "team.id")
Member toEntity(MemberDTO memberDTO);
}
필요할경우 추가적으로 toDto에도 source와 target을 반대로 할경우 처리되니 참고해주세요
반응형
'Spring' 카테고리의 다른 글
[Spring] Springdoc swagger에서 글로벌 header를 설정하는 방법 (0) | 2023.03.10 |
---|---|
[Spring] Springdoc을 이용한 Swagger 적용 (0) | 2023.03.02 |
[Spring] @Valid List형태로 받으면 안되는 현상 해결방안 (0) | 2023.02.28 |
[Spring] @PostConstruct 활용한 초기 설정 (0) | 2023.02.27 |
[Spring] Jasypt 사용시 @DataJpaTest 에러 (0) | 2023.02.24 |
댓글