๐๋ค๋ก๊ฐ๊ธฐ
1. val vs var ๊ฐ๋
val
- ํ ๋ฒ ์ด๊ธฐํํ๋ฉด ๋ณ๊ฒฝํ ์ ์๋ ์ฝ๊ธฐ ์ ์ฉ(immutable) ํ๋กํผํฐ.
- ์ฝํ๋ฆฐ ์ปดํ์ผ๋ฌ๊ฐ getter๋ ์๋ ์์ฑํ์ง๋ง, setter๋ฅผ ๋ง๋ค์ง ์์.
- ์ด์ : ๋ถ๋ณ๊ฐ(immutable)์ ๋ณด์ฅํ๊ธฐ ์ํด.
var
- ์ฝ๊ธฐ-์ฐ๊ธฐ(read-write)*๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ๊ฐ๋ณ(mutable) ํ๋กํผํฐ.
- ์ปดํ์ผ๋ฌ๊ฐ getter์ setter๋ฅผ ๋ ๋ค ์๋ ์์ฑํจ.
- ์ด์ : ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ.
2. ModelMapper์์์ ๋ฌธ์
2.1 ModelMapper์ ๊ธฐ๋ณธ ๋์ ์๋ฆฌ
- ModelMapper๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ์์ฑ์(no-arg constructor)๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค, setter๋ฅผ ํตํด ํ๋กํผํฐ ๊ฐ์ ์ฑ์.
- ์ด์ : Java ๋น(Bean) ํจํด, ์ฆ
getXxx()/setXxx() ๋ฉ์๋์ ๋ง์ถฐ ์๋ํ๊ธฐ ๋๋ฌธ.
2.2 val๋ง ์๋ ํด๋์ค ๋งคํ ์ ๋ฌธ์
val ํ๋กํผํฐ๋ setter๊ฐ ์์.
- ModelMapper๊ฐ ๋ด๋ถ์ ์ผ๋ก
setXxx()๋ฅผ ํธ์ถํด ๊ฐ์ ์ฑ์ฐ๋ ค๊ณ ํด๋, ํด๋น ๋ฉ์๋๊ฐ ์กด์ฌํ์ง ์์ ๊ฐ์ด ํ ๋น๋์ง ์์.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋งคํ ํ์๋ ๊ธฐ๋ณธ๊ฐ(
null ๋ฑ)๋ง ๋จ๊ฒ ๋จ.
3. ์์ ์ฝ๋
3.1 ๋ฌธ์ ์์
// โ
๋ฌธ์ ์์: val๋ง ์ฌ์ฉํ DTO
open class LectureValDto {
val id: String? = null
val title: String? = null
val content: String? = null
}
// ModelMapper ๋งคํ ์ฝ๋ (๊ฐ๋จ ์์)
// ์ฌ๊ธฐ์ LectureEntity -> LectureValDto ๋ณํ์ ์๋ํ๋ค๊ณ ๊ฐ์
val modelMapper = ModelMapper()
val entity = LectureEntity("L001", "Kotlin ๊ฐ์", "val/var ์ฐจ์ด ์ค๋ช
")
val dto: LectureValDto = modelMapper.map(entity, LectureValDto::class.java)
// dto ๋ด๋ถ ํ๋๊ฐ ์ ๋ถ null ์ํ๋ก ๋จ์
println(dto.id) // null
println(dto.title) // null
println(dto.content) // null