VO
1. VO
VO(Value Object) ๋ ๊ฐ์ ํํํ๊ธฐ ์ํ ๊ฐ์ฒด ๋ก, ์ฃผ๋ก ํน์ ์์ฑ์ ๊ทธ๋ฃนํํ๊ฑฐ๋ ํ๋์ ๋จ์๋ก ๋ฌถ์ด์ ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉ๋จ. VO ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น๊ตํ๊ฑฐ๋ ์กฐ์ํ๋๋ฐ ์ด์ ์ด ๋ง์ถฐ์ ธ ์์.
2. VO ์ ์ฃผ์ ํน์ง
1. ๋ถ๋ณ์ฑ
VO ๋ ์์ฑ๋ ์ดํ ๊ทธ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ก ์ค๊ณ๋จ.
์ด๋ฅผ ํตํด VO ๋ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํ ์ ์์.
2. ๋๋ฑ์ฑ
VO ์ ๋๋ฑ์ฑ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋จ ๋จ.
๋ VO ๊ฐ์ฒด์ ๊ฐ์ด ๊ฐ๋ค๋ฉด ๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ์ฃผ
๋ฉ๋ชจ๋ฆฌ ์ฃผ์(์ฐธ์กฐ)๋ ๊ฐ์ฒด ID ๊ฐ ์๋๋ผ, VO ๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ(๊ฐ) ๋ก ๋น๊ต.
3. ๋๋ฉ์ธ ์๋ฏธ
VO ๋ ํน์ ๋๋ฉ์ธ(์ ๋ฌด ์์ญ) ์์ ์ค์ํ ๊ฐ ๋๋ ์์ฑ์ ํํํจ.
์: ๋(
money) , ์ขํ (Coordinates), ์ด๋ฆ(Name), ์ฃผ์(Address)
3. VO์ POJO, DTO ๋น๊ต
ํน์ง
VO (Value Object)
POJO (Plain Old Java Object)
DTO (Data Transfer Object)
๋ชฉ์
๊ฐ์ ํํํ๊ณ ๋๋ฑ์ฑ ํ๋จ
์๋ฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด
๋ฐ์ดํฐ ์ ์ก ๋ฐ ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ด๋
๋ถ๋ณ์ฑ
๋ณด์ฅ
ํ์์ ๋ฐ๋ผ ์ ํ
ํ์ ์์
๋๋ฑ์ฑ ๋น๊ต
๊ฐ ๊ธฐ๋ฐ ๋น๊ต
์ฐธ์กฐ ๋๋ ๊ฐ
์ฐธ์กฐ ๋๋ ๊ฐ
๋น์ฆ๋์ค ๋ก์ง
์์
์์
์์
๊ณ์ธต
๋๋ฉ์ธ ๊ณ์ธต
๋๋ฉ์ธ ๊ณ์ธต
๋ฐ์ดํฐ ์ ์ก ๊ณ์ธต
4. VO ์ ์ฅ์
1. ๋ถ๋ณ์ฑ
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋์์ฑ ๋ฌธ์ ๋ฅผ ๋ฐฉ์ง
2. ๊ฐ๋
์ฑ
๋๋ฉ์ธ์์ ์ค์ํ ๊ฐ์ ์๋ฏธ ์๋ ๋ฐฉ์์ผ๋ก ์บก์ํ
3. ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ
๋์ผํ ๋๋ฉ์ธ ๊ฐ๋ ์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ ์ ์์.
4. ์ ํจ์ฑ ๊ฒ์ฌ
VO ์์ฑ ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํฌํจํ์ฌ ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ์ง ์๋๋ก ๋ฐฉ์ง
์์
public class Coordinates {
private final double latitude;
private final double longitude;
public Coordinates(double latitude, double longitude) {
if (latitude < -90 || latitude > 90) {
throw new IllegalArgumentException("Latitude must be between -90 and 90.");
}
if (longitude < -180 || longitude > 180) {
throw new IllegalArgumentException("Longitude must be between -180 and 180.");
}
this.latitude = latitude;
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Coordinates that = (Coordinates) o;
return Double.compare(that.latitude, latitude) == 0 &&
Double.compare(that.longitude, longitude) == 0;
}
@Override
public int hashCode() {
return Objects.hash(latitude, longitude);
}
@Override
public String toString() {
return "Coordinates{" +
"latitude=" + latitude +
", longitude=" + longitude +
'}';
}
}
Last updated
Was this helpful?