Community

๐Ÿ•Š๏ธ 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) {} ```

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค