| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 백엔드
- 알고리즘
- 코드테스트
- jpa
- Next.js
- 미니정리
- SQL
- 자바스크립트
- JavaScript
- 데이터베이스
- java
- web
- node.js
- 프런트엔드
- 정리
- spring
- jsp
- 스프링부트
- BACK-END
- 프로그래머스
- 디자인 패턴
- 프론트엔드
- 오라클
- 스프링
- 쿼리
- 서버
- 자바
- MySQL
- 코드 테스트
- oracle
- Today
- Total
참치코더의 꿈 메모장
Spring / @Data, @Builder, @Builder.default, ModelMapper 정리 본문

@Data 역할
@Data는 Lombok에서 제공하는 편리한 단축 어노테이션이다.
포함되는 기능!!!
- @Getter + @Setter -> 모든 필드에 getter/setter 생성
- @ToString -> toString() 생성
- @EqualsAndHashCode -> equals() & hashCode() 생성
- @RequiredArgsConstructor -> final 필드나 @NonNull 필드만 포함하는 생성자 생성
생성자를 생성하는 Lombok 어노테이션 3가지
- @NoArgsConstructor : 파라미터 없는 기본 생성자
- @AllArgsConstructor : 모든 필드를 파라미터로 받는 생성자
- @RequiredArgsConstructor : final 또는 @NonNull 필드만 파라미터로 받는 생성자
@Builder 역할
@ Builder를 쓰면 모든 필드를 빌더로 초기화 시키고 해당 객체의 매개변수에 해당하는 값들을 더욱 쉽게
집어넣을 수 있다.
@Data
@Builder
public class Member {
private Long id;
private String name;
@Builder.default // 기본값 유지됨, 따로 입력 및 출력이 됨
private int age = 20;
}
ex1)
Member m1 = Member.builder().id(1L).name("홍길동").age(35).builder(); (가능)
ex2)
Member m2 = Member.builder().id(1L).name("홍길동").builder();
m2.setAge(35); (가능)
ModelMapper 역할
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
@Configuration
// 이 클래스가 스프링 설정 클래스임을 알려준다.
// 여기서 만든 @Bean 메서드들은 스프링 컨테이너가 관리하는 빈(Bean)으로 등록된다.
public class RootConfig{
@Bean
public ModelMapper getMapper(){ // 스프링이 필요할 때마다 자동주입 가능
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setFieldMatchingEnabled(true)
// 기본적으로 ModelMapper는 getter/setter 가반으로 매핑
// 이 옵션을 켜면, 필드 자체 이름을 기준으로 매핑할 수 있음
// 즉, getter/setter 없어도 private 필드끼리 매칭 가능
.setFieldAccessLevel(org.modelmapper.config.Configuration.AccessLevel.PRIVATE)
// 접근 제한자가 private 인 필드도 접근 가능하도록 허용
// DTO <-> Entity 매핑 시 필드 직접 접근이 가능해짐
.setMatchingStrategy(MatchingStrategies.LOOSE);
// 매칭 전략을 설정
// STRICT : 컬럼명이 완전히 일치해야 매핑
// STANDARD : 적당히 기본 규칙에 따라 매핑
// LOOSE : 느슨하게 매칭 (비슷한 이름도 매칭해줌)
return modelMapper;
}
}
// 사용하는 이유 DTO <-> Entity 더 쉽게 매칭 및 매핑됨
// 사용법 : Board board = modelMapper.map(boardDTO, Board.class); -> Entity 변경
// 사용법 : BoardDTO boardDTO = modelMapper.map(board, BoardDTO.class); -> DTO 변경
|
cs |
'Spring' 카테고리의 다른 글
| Spring / 정적 리소스, 뷰 템플릿 변환 반환, Rest API 형태 반환 방법 정리 (0) | 2025.09.16 |
|---|---|
| Spring / HTTP 요청 메시지(단순 텍스트, JSON) 데이터 스프링 전달 및 응답 방법 정리 (0) | 2025.09.15 |
| Spring / @RequestParam, @ModelAttribute 사용법 정리 (코드 위주) (0) | 2025.09.14 |
| Spring / 스프링 로깅, 로그 라이브러리 사용법 (0) | 2025.09.12 |
| Spring / JPA Entity생성 및 Repository 설정 미니 정리(코드 위주) (0) | 2025.09.09 |