Public record
๐ 1. public record๋?
โ
์ ์
-
record๋ ๋ถ๋ณ ๋ฐ์ดํฐ ๊ฐ์ฒด(Immutable Data Object)๋ฅผ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๊ฒ ํด์ฃผ๋ Java 16์์ ์ ์ ๋์
๋ ๊ธฐ๋ฅ์
๋๋ค.
-
๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด(DTO)๋ฅผ ๋ง๋ค ๋ getter, equals(), hashCode(), toString() ๊ฐ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ ์์ฑ์ ์๋ํํด์ค๋๋ค.
-
ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก final์ด๊ธฐ ๋๋ฌธ์, ํ ๋ฒ ๊ฐ์ด ์ค์ ๋๋ฉด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๐ 2. ์ ๋์์๊น? (๊ธฐ์กด ๋ฌธ์ ์ )
์์ DTO ์์ฑ ๋ฐฉ์ (Java ํด๋์ค)
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
@Override
public boolean equals(Object o) { /* equals ๊ตฌํ */ }
@Override
public int hashCode() { /* hashCode ๊ตฌํ */ }
@Override
public String toString() { /* toString ๊ตฌํ */ }
}
- DTO๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์ ๋ฌํ๋ ์ญํ ์ธ๋ฐ, ๋งค๋ฒ ์ด๋ฐ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ์ต๋๋ค.
- ๋ถํ์ํ ์ฝ๋๊ฐ ๋ง์ ๊ฐ๋
์ฑ ์ ํ & ์ ์ง๋ณด์ ๋ถ๋ด ์ฆ๊ฐ.
๊ฐ์ : record
public record Person(String name, int age) { }
- ๋จ 1์ค๋ก ๋!
- ์์ฑ์, getter, equals, hashCode, toString ์๋ ์์ฑ
- ํ๋๋ final๋ก ๊ฐ์ โ ๋ถ๋ณ์ฑ ๋ณด์ฅ
๐ 3. public record ํน์ง ์์ฝ
| ํน์ง |
์ค๋ช
|
| ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๊ฑฐ |
์์ฑ์, getter, equals, hashCode, toString ์๋ ์์ฑ |
| ๋ถ๋ณ์ฑ |
ํ๋๊ฐ ์๋์ผ๋ก final ์ฒ๋ฆฌ (์์ ๋ถ๊ฐ) |
| ์์ ๋ถ๊ฐ |
record๋ final์ด๋ผ ์์ํ ์ ์์ |
| ๋ช
ํํ ๋ชฉ์ |
์์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ ๋ฌ์ฉ์ผ๋ก ์ต์ ํ |
| ์ปดํฉํธํ ๋ฌธ๋ฒ |
ํ๋ ์ ์ธ๋ง ํ๋ฉด ๋! |
๐ ๋ณด์ผ๋ฌํ๋ ์ดํธ๋?
- ๋งค๋ฒ ๋๊ฐ์ด ์์ฑํด์ผ ํ๋ ํ์ ์ฝ๋.
- ์ค์ ๋ก์ง์ด๋ ํต์ฌ ๊ธฐ๋ฅ๊ณผ๋ ๋ณ ์๊ด์๋๋ฐ, ์ธ์ด๋ ํ๋ ์์ํฌ ํน์ฑ์ ๊ผญ ํ์ํ ์ฝ๋.
- ์ ์ฐ๋ฉด ๋์์ ์ ๋์ง๋ง, ์ฐ๋ ๊ฒ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๊ณ ๋นํจ์จ์ ์ธ ์ฝ๋๋ค.
๐ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๋ฆฌ
| ํน์ง |
๋ด์ฉ |
| ์๋ฏธ |
๋ฐ๋ณต์ ์ด๊ณ , ๊ฑฐ์ ์๋ฏธ ์๋ ํ์ ์ฝ๋ |
| ์์ |
getter, setter, ์์ฑ์, toString, equals, hashCode |
| ๋ฌธ์ |
๋ฐ๋ณต ์์ฑ์ผ๋ก ๊ฐ๋
์ฑ ์ ํ, ์ค์ ๊ฐ๋ฅ์ฑ ์ฆ๊ฐ |
| ํด๊ฒฐ์ฑ
|
record, Lombok @DaTa, IDE ์๋ ์์ฑ ๊ธฐ๋ฅ ๋ฑ |
๐ก ์ ์ด๋ฆ์ด "Boilerplate"์ผ๊น?
- ์๋๋ ์ธ์ยท์ถํ ์
๊ณ ์ฉ์ด
- ํ(Template)์ฒ๋ผ ๋ณต์ฌํด์ ์ฐ๋ ๋ด์ฉ์ ์๋ฏธ
- ์ฝ๋ฉ์์๋ ๊ฑฐ์ ๋๊ฐ์ ๊ตฌ์กฐ๋ก ๋ฐ๋ณต๋๋๊น ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ
๐ ํ ์ค ์ ๋ฆฌ
๋ณด์ผ๋ฌํ๋ ์ดํธ๋, ์๋ฏธ๋ ๋ณ๋ก ์์ง๋ง ์ธ์ด ํน์ฑ์ ๋ฐ๋ณต์ ์ผ๋ก ์จ์ผ ํ๋ ์ฝ๋
Public record
๐ 1. public record๋?
โ ์ ์
record๋ ๋ถ๋ณ ๋ฐ์ดํฐ ๊ฐ์ฒด(Immutable Data Object)๋ฅผ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๊ฒ ํด์ฃผ๋ Java 16์์ ์ ์ ๋์ ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด(DTO)๋ฅผ ๋ง๋ค ๋ getter, equals(), hashCode(), toString() ๊ฐ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ ์์ฑ์ ์๋ํํด์ค๋๋ค.
ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก final์ด๊ธฐ ๋๋ฌธ์, ํ ๋ฒ ๊ฐ์ด ์ค์ ๋๋ฉด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๐ 2. ์ ๋์์๊น? (๊ธฐ์กด ๋ฌธ์ ์ )
์์ DTO ์์ฑ ๋ฐฉ์ (Java ํด๋์ค)
๊ฐ์ : record
๐ 3. public record ํน์ง ์์ฝ
๐ ๋ณด์ผ๋ฌํ๋ ์ดํธ๋?
๐ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ๋ฆฌ
๐ก ์ ์ด๋ฆ์ด "Boilerplate"์ผ๊น?
๐ ํ ์ค ์ ๋ฆฌ