๐๏ธ Java Records: ์ธ์ , ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ฉํด์ผ ํ๋์ง
์๋ฐ์์, ์ฝ๋๋ฅผ ๋ ์งง๊ณ ์ฝ๊ฒ ์ฝ์ ์ ์๋๋ก ๋์์ฃผ๋ ๋ ์ฝ๋๋ผ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ๊ธ์์ ์๋ฐ ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ , ๋ช ๊ฐ์ง ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ๐ ๋ ์ฝ๋๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์ ์ข์ ์ด์ ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋์ค์ ๊ฐ ํ๋์ ๋ํด ์์ฑ์ ๋ฐ getter/setter ๋ฉ์๋๋ฅผ ์ ์ํ ํ์ ์์ด ํ๋๋ฅผ ํ ์ค์ ์ฝ๋๋ก ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๊ฐ ๋ ์งง๊ณ ์ฝ๊ธฐ ์ฌ์์ง๋๋ค. ๐ DTO ๋ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ DTO์ ์ ํฉํฉ๋๋ค. ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ์ค์ ์ฝ๋๋ง์ผ๋ก DTO๋ฅผ ์ ์ํ ์ ์์ผ๋ฏ๋ก ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋์ ์์ ์ค์ผ ์ ์์ต๋๋ค. ``` public record PersonDTO(String firstName, String lastName, int age) {} ``` ๐ ๋ถ๋ณ๊ฐ์ฒด ๋ ์ฝ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ์ด๋ฏ๋ก ์ธ์คํด์คํ ํ ์์ ํด์๋ ์ ๋๋ ํด๋์ค์ ์ ํฉํฉ๋๋ค. ๐ ๋จ์ํ ๊ฐ ์ ํ ๋ ์ฝ๋๋ ๋จ์ํ ๊ฐ์ ๋ํ๋ด๋ ํด๋์ค์ ์ ํฉํฉ๋๋ค. ๐ API ์๋ต ๋ ์ฝ๋๋ API์ ์ํด ๋ฐํ๋๋ ์๋ต์ ํํํ๊ธฐ ์ํ ์ข์ ์ ํ์ ๋๋ค. ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ํ๋๋ง์ผ๋ก ํด๋์ค๋ฅผ ์ ์ํ ์ ์์ผ๋ฏ๋ก API ์๋ต ์์ ์ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค. ``` public record ErrorResponse(int code, String message, String additionalInfo) {} ``` ๐ Config ์ ํ ๋ ์ฝ๋๋ config ์ ํ ์ ์ ํฉํฉ๋๋ค. ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์ ์ ๋ณด๋ค ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ``` public record DbConfig(String databaseUrl, String username, String password) {} ```