1. ์คํ๋ง ๋น ( Spring Bean )
- ์คํ๋ง ๋น์ ๊ฐ์ฒด์ ์ด๋ฆ, ํด๋์ค ํ์ ์ ์ ๋ณด๊ฐ ์คํ๋ง ์ปจํ ์ด๋๋ก ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
2. ์๋ฐ ๋น ( Java Bean )
- ์๋ฐ ๋น์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์ ์ธ๋์ด ์์ด์ผ ํจ.
- getter / setter ํจํด์ผ๋ก ํด๋์ค ๋ด๋ถ ์์ฑ์ ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค.
- java.io.Serializable์ ๊ตฌํํ๊ณ ์์ด์ผํ๋ค.
3. DTO ( Data Transfer Object )
- DTO๋ ์ํํธ ์จ์ด ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด์ด๋ฏ๋ก DTO๋ด๋ถ์๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์์ด์ผํ๋ค. ( getter ์ ์ธ )
4. ๊ฐ ๊ฐ์ฒด ( Value Object, VO )
- ๊ฐ ๊ฐ์ฒด๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
- equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ ํด๋์ค๊ฐ ํํํ๋ ๊ฐ์ ์๋ก ๋น๊ตํ๋ฉด ์ข๋ค.
๋ถ๋ณํด๋์ค
getter, setter ๋ฉ์๋๋ฅผ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.
๋ถ๋ณ ํด๋์ค๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์
- ํด๋์ค๋ฅผ ๋ฐ๋์ final๋ก ์ ์ธํ๋ค.
- ํด๋์ค์ ๋งด๋ฒ๋ณ์๋ค์ ๋ฐ๋์ final๋ก ์ ์ธํ๋ค.
- ์์ฑ์๋ฅผ ์ง์ ์ ์ธํ์ฌ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ง ์๋๋ก ํ๋ค.
- ๋งด๋ฒ ๋ณ์์์๋ setter ๋ฉ์๋๋ฅผ ๋ง๋ค์ง ์๊ณ getter๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค.
๋ถ๋ณ ํด๋์ค ์์) Money
public final class Money implements Serializable {
private final Long value;
private final Currency currency;
public Money(Long value, Currency currency) {
if (value == null || value < 0) {
throw new IllegalArgumentException("invalid value = " + value);
}
if (currency == null) {
throw new IllegalArgumentException("invalid currency");
}
this.value = value;
this.currency = currency;
}
public Long getValue() {
return value;
}
public Currency getCurrency() {
return currency;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Money money = (Money) o;
if (!getValue().equals(money.getValue())) return false;
return getCurrency().equals(money.getCurrency());
}
}
๋ถ๋ณ ํด๋์ค๋ฅผ ์ค๊ณํ ๋๋ ๋ฐ๋์ final ํค์๋๋ฅผ ํด๋์ค์ ์ ์ธํด์ผ ํ๋ค.
final ํค์๋๋ฅผ ์ ์ธํ์ง ์์ผ๋ฉด ํด๋์ค ์์์ด ๋ฐ์ํ ์ ์๊ณ Money์ ๋ฉ์๋๋ค์ด ์ค๋ฒ๋ผ์ด๋ ๋ ์ ์๋ค.