์ง๋ ํฌ์คํ ์์๋ ๊ธฐ๋ณธ ์์ฑ์์ ๊ฐ์ฒด ๋งคํ์ ์ฃผ์ํ ์ ์ ๋ํด ๋ค๋ฃจ์์ต๋๋ค.
๊ทธ์ค ์์ง ํด๊ฒฐํ์ง ๋ชปํ๋ ์๋ฌธ์ ์ธ
@Getter
์ @Builder
๋ง ์ฌ์ฉํด๋ ์ ์์ ์ผ๋ก ๊ฐ์ฒด ๋งคํ์ด ๋๋๊ฐ?์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค.
ํด๋น ์ด์ ๋ฅผ ์์๋ณด๊ธฐ ์ํด, ๋จผ์ Mybatis๊ฐ ์์ฑ์๋ฅผ ํตํ ๊ฐ์ฒด ๋งคํ์ ํ๋ ๋ฐฉ๋ฒ์ ์ข ๋ฅ ๋ฐ ๋์ ๋ฐฉ์์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
MyBatis๋ฅผ ์ฌ์ฉํด์ ์กฐํํ ์ฟผ๋ฆฌ๋ฅผ DTO์ ๋งคํํ ๋,์ด๋ ํ ๋งคํ ๋ฐฉ์๋ค์ด ์กด์ฌํ๊ณ , ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ ๊น์?
์ ๋ ํด๋น ํ๋ก์ ํธ์ ๊ฐ๋ ์ฑ, ์ ์ฐ์ฑ, ๋ถ๋ณ์ฑ ๋ฑ์ ์ด์ ๋ก @Builder ํจํด์ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์, @Builder ํจํด์ ํ์ฉํ ๊ฒฐ๊ณผ ๋งคํ์ ๋ํด์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
๐งฉ Mybatis์์ @Builder ํจํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฃผ์์
@Builder
๋ ๋น๋ ํด๋์ค๊ฐ ์ฌ์ฉํ ์ ์๋๋ก private ์์ฑ์๋ฅผ ์์ฑํ๋๋ฐ, ์ด๋ ๋ชจ๋ ํ๋ ๊ฐ์ ํฌํจํฉ๋๋ค.
๊ธฐ๋ณธ์์ฑ์๋ฅผ ํตํด ๋งคํํ ๊ฒฝ์ฐ, ๋ณ์ ๋ค์ด๋ฐ๊ณผ column ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด ๋ฆฌํ๋ ์ ์ ํตํด ์๋์ผ๋ก ๋งคํ์ด ๋ฉ๋๋ค. (์ด๋ ๋์๋ฌธ์๋ ๊ตฌ๋ณํ์ง ์์ง๋ง, camelCase๋ ๊ตฌ๋ณํฉ๋๋ค.)
์ฆ ๋์๋ฌธ์ ์๊ด ์์ด DB์ column๋ช ๊ณผ ์ ํํ ์ผ์นํด์ผ ์ธ์ํฉ๋๋ค.
๋์๋ฌธ์๋ ๋ฌด์ํ๊ณ ๋ณ์์ ์ปฌ๋ผ๋ช ์ด ์ผ์นํ๋ฉด ์๋์ผ๋ก ๋งคํ์ด ๋์ง๋ง, ์์ ๊ฒฝ์ฐ๋ง์ผ๋ก๋ ๋ณดํต ๋ง์กฑํ ๋งํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ด๋ ต์ต๋๋ค.
์๋ฐ ๋ช ๋ช ๊ท์น์ผ๋ก ๋๊ฒ camelCase๋ฅผ ์ฌ์ฉํ๊ณ , ๊ธฐ๋ณธ์์ฑ์์ ์๋ ๋งคํ์ ๊ฒฝ์ฐ camelCase๊น์ง ๊ณ ๋ คํด ์ฃผ์ง๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ์ด๋ด ๋๋ ๋ณ์นญ(Alias)์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์์ฑ์ + ์ปฌ๋ผ Alias๋ฅผ ์ง์ ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋งคํํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ํ๋ ๋ฐ ์ปฌ๋ผ์ ๋ํด ๋งคํ์ด ์ ์์ ์ผ๋ก ์งํ๋ฉ๋๋ค.
ํ์ง๋ง ๋ฐฉ๋ฒ 1๊ณผ 2๋ฅผ ์ค์ํ๊ธฐ์๋ ํ๋๋ช ์ด ์นด๋ฉ์ผ์ด์ค์ธ ํ๋๊ฐ ๋ง์ ๊ฒฝ์ฐ ์์ฐ์ฑ์ด ๋จ์ด์ง๋๋ค.
๋ฐ๋ผ์ camelCase๊น์ง ๋ณํํ์ฌ ๋ณ์ ๋ค์ด๋ฐ์ ๋ฐ๋ผ ์๋ ๋งคํํด์ฃผ๋ ์ค์ ์ ํ ์ ์์ต๋๋ค.
MyBatis - ๐ ๏ธTroubleShooting
ํ์ง๋ง ๋ชจ๋ ํ๋๋ฅผ ํฌํจํ๋ ์์ฑ์๋ก๋ง ๋งคํํ๋ค๋ฉด, ์๋ฐ ๋ฌธ๋ฒ์ธ ์ ์ฒด์์ฑ์๋ก ์์ฑ์๋ฅผ ์์ฑํ ๋, ํํ๋ฏธํฐ์ ๊ฐ์, ํ์ ๊ณผ ๋ณ์ ์์๋ฅผ ๋ง์ถฐ ์์ฑํด ์ฃผ์ด์ผ ํ๋ ์ ๊ณผ ๊ฐ์ด ์ฃผ์๋ฅผ ํด์ผํฉ๋๋ค.
๋ชจ๋ ํ๋๋ฅผ ํฌํจํ๋ ์์ฑ์๋ก ๋งคํํ๋ฉด, ํ๋ผ๋ฏธํฐ ์์์ ์กฐํ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ด๊ฐ ์์๋๋ก ๋งคํ์ด ๋ฉ๋๋ค.
๋ฐ๋ผ์ @AllArgsConstructor
๋ง ์ฌ์ฉ ํ๋ ๊ฒฝ์ฐ, ๋ค์์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
1. ๊ฐ์ฒด์ ๋ณ์ ์์๋ฅผ ํ
์ด๋ธ์ column ์์์ ๋๊ฐ์ด ๋ง์ถฐ์ผ ํ๋ค.
2. ๊ทธ ์์๋๋ก ๋งคํ๋๋ฏ๋ก CamelCase๋ฅผ ์ฌ์ฉํด๋ ์ ์์ ์ผ๋ก ๋งคํ๋๋ค.
ํ์ง๋ง ๋ง์ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ์ง ์์ฑ์๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ, arg ์๋ฆฌ๋จผํธ์ ์์๋ฅผ ์ ์งํ๋ ๊ฒ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
Mybatis 3.4.3v ์ดํ๋ถํฐ๋ ๊ฐ ๋งค๊ฐ ๋ณ์์ ์ด๋ฆ์ ์ง์ ํ์ฌ ์์์ ์์๋ก arg ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Mybatis ๊ณต์ ๋ฌธ์
https://mybatis.org/mybatis-3/ko/sqlmap-xml.html
@Getter
์ @Builder
๋ง ์ฌ์ฉํด๋ ์ ์์ ์ผ๋ก ๋งคํ๋๋ ์ด์ ๋ฐ๋ผ์ ๋ง์ ๊ธฐ์ ๋ธ๋ก๊ทธ์์ Mybatis๋ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ด์ผ ์ ์์ ์ผ๋ก ๋งคํ์ด ๋๋ค๊ณ ๋งํ๊ณ ์์ง๋ง, ์ด๋ ์๋ชป๋ ๊ธฐ์ ์ ๋๋ค.
๋ฐ๋ผ์ @Getter
์ @Builder
๋ง ๋ถ์ด์๋ ํด๋์ค์๋ ๋ชจ๋ ํ๋๊ฐ์ ํฌํจํ ์์ฑ์๊ฐ ์์ฑ๋๊ธฐ์, ์๋ฐ ๋ฌธ๋ฒ์ ๋ฐ๋ผ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ต๋๋ค.
ํ์ง๋ง ์ ์ฒด์์ฑ์๋ง์ผ๋ก๋ ๊ฐ์ฒด ๋งคํ์ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ ์ฒด์์ฑ์๋ก ๋งคํํ๋ ๊ฒฝ์ฐ ๋ช๊ฐ์ง ์ฃผ์์ฌํญ์ด ์์ต๋๋ค.