DAO์ VO ์ ์์ ์ฌ์ฉ๋ฐฉ๋ฒ ๐ถ
01. VO
VO(Value Object)์ ๊ฐ๋
์ฌ๋ฌ ๋ค๋ฅธ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํด๋์ฌ๋ก ์ ๋ฌํ ๋ ์ฌ์ฉ
TO(Transfer Object)๋ผ๊ณ ๋ ํจ
๋งํด ํ์ธ๋ฌ ์์ ์จ(์๊ตญ SW ๊ฐ๋ฐ์) ๊ฐ VO์ ๋ํด ์ค๋ช ํ ๊ฒ์ ๋ณด๋ฉด ์ดํด๊ฐ ์ฝ๋ค.
When programming, I often find it's useful to represent things as a compound.
โก ํ๋ก๊ทธ๋๋ฐํ ๋ ์ข
์ข
์ฌ๋ฌผ์ ๋ณตํฉ์ผ๋ก ํํํ๋ ๊ฒ์ด ์ ์ฉํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
A 2D coordinate consists of an x value and y value. An amount of money consists of a number and a currency. A date range consists of start and end dates, which themselves can be compounds of year, month, and day.
โก 2D ์ขํ๋ x ๊ฐ๊ณผ y ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ธ์ก์ ์ซ์์ ํตํ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ ์ง ๋ฒ์๋ ์์ ๋ ์ง์ ์ข
๋ฃ ๋ ์ง๋ก ๊ตฌ์ฑ๋๋ฉฐ ์์ฒด์ ์ผ๋ก ์ฐ๋, ์, ์ผ์ ํฉ์ฑ์ผ ์ ์์ต๋๋ค.
But unless I'm careful when programming, I may not get that behavior in my programs
โก ๊ทธ๋ฌ๋ ํ๋ก๊ทธ๋๋ฐํ ๋ ์ฃผ์ํ์ง ์์ผ๋ฉด ๋ด ํ๋ก๊ทธ๋จ์์ ํด๋น ๋์์ ์ป์ง ๋ชปํ ์ ์์ต๋๋ค.
๋๋ฉ์ธ์์ ์ฌ๋ฌ ์์ฑ๋ค์ ๋ฌถ์ด์ ํน์ ๊ฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธ
๋งํด ํ์ธ๋ฌ ์์ ์จ ์ค๋ช ์ฃผ์
https://www.martinfowler.com/bliki/ValueObject.html
VO๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
ํ ์ด๋ธ์ ํ๋๋ช ์ ์์ฑ์ผ๋ก ์ ์ธ
์์ฑ์๋ฅผ ๊ตฌํ
๊ฐ ์์ฑ์ ๋ํ getter/setter ๋ฉ์๋๋ฅผ ๊ตฌํ
๐ฑ gettet/setter์ ์๋ฏธ ๐ฑ
OOP์์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด ์ธ๋ถ์์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ๋ง๋๋ค.
๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์์ ์ฝ๊ณ ๋ณ๊ฒฝํ ๋, ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ ์๊ธฐ ๋๋ฌธ!
๋ฐ๋ผ์ ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋๋ฐ, ์ด ๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก getter/setter!
02. DAO
์ถํ์ DB๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ์ด์ฉํ๊ฒ ๋๋ DAO!
DAO(Data access object)์ ๊ฐ๋
์๋ฐ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ง ์ํํ๋ ํด๋์ค
์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํ๋ ํด๋์ค์ ๊ตฌ๋ถํ์ฌ ์์
DAO(Data access object) ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
ํ๋ฉด ๊ธฐ๋ฅ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๊ธฐ๋ฅ ๋ฑ์ ๊ฐ๊ฐ ๋ด๋นํ๋ ํด๋์ค๋ก ๋๋์ด ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
์ ์ง ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํ๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
'๐ปProgramming > โ๏ธJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์์ธ์ฒ๋ฆฌ (0) | 2022.08.03 |
---|---|
[JAVA] Annotation (0) | 2022.08.02 |
[JAVA] ์ด๊ฑฐํ ํ์ (0) | 2022.07.27 |
[JAVA] ๊ฐ์ฒด์งํฅ_์ธํฐํ์ด์ค (0) | 2022.07.26 |
[JAVA]๊ฐ์ฒด์งํฅ_์ถ์ ํด๋์ค (0) | 2022.07.26 |