[Java] ModelMapper
๐ ๋ค์ด๊ฐ๋ฉฐ
๊ณ์ธตํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ง๋ค ๋ณด๋ฉด ์ํฐํฐ(Entity) โ DTO ๋ณํ ์ฝ๋๋ฅผ ๋์์ด ์์ฑํ๊ฒ ๋๋ค. dto.setName(entity.getName()) ๊ฐ์ ๋ฐ๋ณต์ ์ธ ๋งคํ์ ์ง๋ฃจํ๊ณ ์ค์ํ๊ธฐ๋ ์ฝ๋ค. ์ด ๋ฒ๊ฑฐ๋ก์์ ๋์ด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ModelMapper๋ค.
ModelMapper๋? Java์์ ๊ฐ์ฒด ๊ฐ์ ๋งคํ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ฃผ๋ก ์ํฐํฐ์ DTO ์ฌ์ด์ ๋ฐ์ดํฐ ๋ณํ์ ์ฌ์ฉ๋์ด, ๋ฐ๋ณต์ ์ธ ๋งคํ ์ฝ๋๋ฅผ ์ต์ํํ๋ค.
1. ์ ModelMapper๋ฅผ ์ธ๊น?
| ์ฅ์ | ์ค๋ช |
|---|---|
| ๊ฐํธํ ๊ตฌ์ฑ | ๋ณ๋ ์ค์ ์์ด ๋๋ถ๋ถ์ ๊ธฐ๋ณธ ๋งคํ ์ํ โ ์ด๋ณด์๋ ์ฝ๊ฒ ์ฌ์ฉ |
| ์๋ ๋งคํ | ํ๋๋ช ์ด ์ผ์นํ๋ฉด ์๋ ๋งคํ, ๋ถ์ผ์น ํ๋๋ง ์๋ ์ค์ |
| ์ ์ฐ์ฑ | ํน์ ํ๋์ ๋ณํ ๋ฐฉ๋ฒยท์ ์ธ ๋ฑ์ ์ธ๋ฐํ๊ฒ ์ ์ด ๊ฐ๋ฅ |
1
2
3
PersonEntity โโModelMapper.map()โโโบ PersonDTO
name, age (ํ๋๋ช
์ผ์น) name, age
์๋์ผ๋ก ๊ฐ ๋ณต์ฌ
2. ์ฌ์ฉ ์์
๋จผ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ค. (Maven ๊ธฐ์ค)
1
2
3
4
5
6
<!-- pom.xml -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.4.3</version>
</dependency>
๊ทธ๋ค์ map() ๋ฉ์๋ ํ ๋ฒ์ผ๋ก ์ํฐํฐ๋ฅผ DTO๋ก ๋ณํํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ModelMapper ์ธ์คํด์ค ์์ฑ
ModelMapper modelMapper = new ModelMapper();
// ์ํฐํฐ ๊ฐ์ฒด ์์ฑ
PersonEntity personEntity = new PersonEntity();
personEntity.setName("John Doe");
personEntity.setAge(25);
// DTO๋ก ๋งคํ (ํ๋๋ช
์ด ๊ฐ์ผ๋ฉด ์๋ ๋งคํ)
PersonDTO personDTO = modelMapper.map(personEntity, PersonDTO.class);
// ๋งคํ ๊ฒฐ๊ณผ ํ์ธ
System.out.println(personDTO.getName()); // ์ถ๋ ฅ: John Doe
System.out.println(personDTO.getAge()); // ์ถ๋ ฅ: 25
PersonEntity(์ํฐํฐ)์ PersonDTO(์ ์ก ๊ฐ์ฒด)์ ํ๋๋ช
์ด ๊ฐ์ผ๋ฏ๋ก, map() ํธ์ถ๋ง์ผ๋ก ๋ ๊ฐ์ฒด ๊ฐ ํ๋๊ฐ ์๋ ๋งคํ๋๋ค.
๐ ์ ๋ฆฌ
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| ModelMapper | ๊ฐ์ฒด ๊ฐ ๋งคํ์ ์๋ํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
| map() | ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋์ ํ์ ์ผ๋ก ๋ณํ |
| ์๋ ๋งคํ ๊ธฐ์ค | ํ๋๋ช ์ผ์น (๋ถ์ผ์น ํ๋๋ ์๋ ์ค์ ) |
ModelMapper๋ โํ๋๋ช
์ด ๊ฐ์ผ๋ฉด ์์์ ์ฎ๊ฒจ์ค๋คโ๋ ๋จ์ํ ๊ท์น์ผ๋ก ๋ฐ๋ณต์ ์ธ ๋งคํ ์ฝ๋๋ฅผ ํฌ๊ฒ ์ค์ฌ์ค๋ค. ์ํฐํฐ-DTO ๋ณํ์ด ์ฆ์ ํ๋ก์ ํธ์์ ํนํ ์ ์ฉํ๋ค.
Comments powered by Disqus.