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?