Back-End ์ž‘์—…์‹ค/Spring Framework

[Spring] VO, DAO, DTO, Entity์— ๋Œ€ํ•ด์„œ

์ฃผ๋‹ˆ์“ฐ๐Ÿง‘‍๐Ÿ’ป 2022. 3. 9. 18:22
728x90
๋ฐ˜์‘ํ˜•

 

 

 

๐Ÿš€ VO( Value Object )

    ๐Ÿ”ฝ  ๊ฐœ๋…

Value Object๋Š” DTO์™€ ๋™์ผํ•œ ๊ฐœ๋…์ด๋‚˜ ์ฐจ์ด์ ์€ read only ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฒƒ์ด์—์š”.

Value Object๋Š” ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€์‘๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค์ธ ๊ฒƒ์ด์—์š”. 

ํ˜•ํƒœ๋Š” db ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•„๋“œ๋“ค์„ Value Object์˜ Attribute๋กœ ํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Getter, Setter ๋ฉ”์†Œ๋“œ์˜ ์กฐํ•ฉ์œผ๋กœ ํด๋ž˜์Šค๊ฐ€ ํ˜•์„ฑ๋˜์–ด์ง„ ํด๋ž˜์Šค์ธ ๊ฒƒ์ด์—์š”.

 

๐Ÿ’ก ์ฐธ๊ณ :
JPA์˜ Entity์—์„œ๋Š” Setter ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋‚˜, VO๋Š” ์•„๋‹ˆ๋‹ค.

 

ํŠน์„ฑ์€ ๋Œ€์ฒด๋กœ ๋ถˆ๋ณ€์„ฑ์ด๊ณ  equlas()๋กœ ๋น„๊ตํ•  ๋•Œ ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ฐ’์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

ํ”„๋กœ๊ทธ๋žจ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒ ์š”์ฒญ์ด ์™”์„ ๋•Œ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์กฐํšŒํ•˜๋Š” ์กฐ๊ฑด์„ VO์— ๋‹ด์•„์„œ DAO์— ์š”์ฒญํ•˜๋ฉด DAO๋Š” ์ €์žฅ์†Œ(์ผ๋ฐ˜์ ์œผ๋กœ Database )๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•œ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๊ฒŒ ๋˜๋Š” ๋ฐฉ์‹ ์ด๋ž๋‹ˆ๋‹ค.

 

VO๋Š” ๊ฐ„๋‹จํ•œ ๋…๋ฆฝ์ฒด( Entity )๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ž‘์€ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด์—์š”. 

VO์˜ ๊ฐ™์Œ์€ ๊ทธ ์ •์ฒด์„ฑ์— ์˜ํ•ด ๊ฒฐ์ •๋˜์ง€ ์•Š๋Š”๋ฐ, ๊ทธ ๋œป์€ ๋‘ VO ๋“ค์€ ๊ทธ ๋‘ ๊ฐ€์ง€๊ฐ€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ™๊ณ  ์žˆ์„ ๋•Œ ๊ฐ™์€ ๊ฒƒ์ด์ง€ ๊ฐ™์€ ๊ฐ์ฒด๋ผ๊ณ  ํ•ด์„œ ๊ฐ™์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด์—์š”.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ™์€ ๋…๋ฆฝ์ฒด๋ฅผ ๋Œ€๋ณ€ํ•˜๋Š” ๋ณต์ˆ˜์˜ ๊ฐ™์€ VO๋“ค์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๊ฐ€๋” ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค์— ์˜์กดํ•˜๊ณ  ๊ทธ์— ๊ธฐ๋ฐ˜ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„ํŽธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

โ–  ํ•„์š”์„ฑ

Network traffic์„ ์ค„์ž„์œผ๋กœ ์ธํ•ด ํšจ๊ณผ์ ์ด๋‹ค.

โ–  ๊ธฐ๋Œ€ํšจ๊ณผ

Network traffic์ด ์ค„์–ด๋“ ๋‹ค.

โ–  ์žฅ, ๋‹จ์ 

์žฅ์ ์€ ๋น„ ์„œ๋ฒ„ ์ธก ํด๋ผ์ด์–ธํŠธ๋„ ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ์˜์†์„ฑ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

๋ฐํ‹ฐ์–ด ์ „๋‹ฌ์„ ์œ„ํ•ด ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ํด๋ž˜์Šค์˜ ์„ ์–ธ์„ ์œ„ํ•ด ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ฆ‰ ํŒŒ์ผ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ฒŒ ๋˜๊ณ  ๊ด€๋ฆฌ๋„ ํž˜๋“ค์–ด์ง„๋‹ค.

 

 

 

 

๐Ÿš€ Entity

    ๐Ÿ”ฝ  ๊ฐœ๋…

Entity๋Š” ์‹ค์ œ DB ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ํ•ต์‹ฌ ํด๋ž˜์Šค์ธ ๊ฒƒ์ด์—์š”. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜๊ณ  ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ ๋œ๋‹ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ ˆ๋Œ€๋กœ Entity๋ฅผ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฒƒ์ด์—์š”.
Entity๋Š” id๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ฆฌ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

Entity๋Š” DTO์ฒ˜๋Ÿผ setter๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ๊ฐ€๋ณ€ ๊ฐ์ฒด๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

public class Member {
    private final Long id;
    private final String email;
    private final String password;
    private final Integer age;

    public Member() {
    }

    public Member(Long id, String email, String password, Integer age) {
        this.id = id;
        this.email = email;
        this.password = password;
        this.age = age;
    }
}

 

 

 

 

 

 

 

 

๐Ÿš€ DTO( Data Transfer Object : ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด )

    ๐Ÿ”ฝ  ๊ฐœ๋…

๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๊ฐ์ฒด๋ฅผ ํ•œ ์‹œ์Šคํ…œ์—์„œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐœ์ฒด์ธ ๊ฒƒ์ด์—์š”.

Data์— ์ ‘์†ํ•˜๋Š” ๊ฐ์ฒด์ธ ๊ฒƒ์ด์—์š”. ์—ฌ๊ธฐ์„œ Data๋ž€ ์ผ๋ฐ˜์ ์ธ Database๋„ ๋  ์ˆ˜ ์žˆ๊ณ , ํŒŒ์ผ๋„ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋„ ๋  ์ˆ˜ ์žˆ๊ณ , ๊ธฐํƒ€ ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋„ ๋  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

 

DTO๋Š” ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด์—์š”. ์ด๊ฒƒ์„ ์ด์šฉํ•˜๋Š” ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ฃผ๋กœ ๊ฐœ๋ณ„ ํ˜ธ์ถœ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ์ž‘์—…์ผ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€ ์›๊ฒฉ ์ธํ„ฐํŽ˜์ด์Šค(์˜ˆ:์›น ์„œ๋น„์Šค)์— ์˜ํ•ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ณ„ ํ˜ธ์ถœ์ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์™•๋ณต ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๋ช‡ ๋ฒˆ์˜ ํ˜ธ์ถœ์— ์˜ํ•ด ์ „์†ก๋  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๋Š” DTO๋ฅผ ์ด์šฉํ•ด์„œ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋ž๋‹ˆ๋‹ค.

 

โ–  VO์™€ DTO์˜ ๋น„๊ต

DTO์˜ ๋‚˜๋จธ์ง€ ์†์„ฑ์€ VO์™€ ๋˜‘๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

Core J2EE Patterns๋ผ๋Š” ์ฑ…์—์„œ๋Š” Value Object์™€ Transfer Object๋ฅผ ๋™์ผํ•œ ๋œป์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ Martin Fowler๋Š” ์ €์„œ Patterns of Enterprise Applicatino Architecture์—์„œ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์ด์•ผ๊ธฐ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”. 

DTO๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์นœ๊ตฌ๋กœ, VO๋Š” ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ๋™์ผ ์˜ค๋ธŒ์ ํŠธ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

DTO a = new DTO(1);

DTO b = new DTO(1);

 

์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, a != b ์ด์ง€๋งŒ,

 

VO a = VO(1);

VO b = VO(1);

 

์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ๋Š” a == b ๋ผ๊ณ  ์ •์˜ํ•˜๋Š” ํ˜•ํƒœ์ธ ๊ฒƒ์ด์—์š”.

 

๋Œ€๋ถ€๋ถ„์˜ ๊ฒ€์ƒ‰์—์„œ ์‚ฌ๋žŒ๋“ค์€ VO์™€ DTO๋ฅผ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ์ด์•ผ๊ธฐ ํ•˜๊ณ  ์žˆ์–ด์„œ, ์•„์ง๋„ VO์™€ DTO๊ฐ€ "์ด๋Ÿฐ๊ฑฐ๋‹ค"๋ผ๊ธฐ ๋ณด๋‹ค ๊ฑฐ์˜ ๋˜‘๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๊ณ , ์ฃผ๋‹ˆํ•˜๋ž‘๋„ ์ฐธ ํ–‡๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

 

 

๐Ÿš€ DAO( Data Access Object : ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ์ฒด )

    ๐Ÿ”ฝ  ๊ฐœ๋…

๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋ชฉ์ ํ•˜๋Š” ๊ฐ์ฒด๋ž๋‹ˆ๋‹ค. ์ปค๋„ฅ์…˜ ๊ฐ™์€ ๊ฒƒ์„ ํ•˜๋‚˜๋งŒ ๋‘๊ณ  ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ DAO์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ์ž๋ฃŒ์— ์ ‘๊ทผ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด DAO์˜ ๊ฐœ๋…์ธ ๊ฒƒ์ด์—์š”.

DB์— ๋Œ€ํ•œ insert, update, delete, select๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ต๋‹ˆ๋‹ค.

 

DAO๋Š” ํŠน์ • ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ๋‹ค๋ฅธ ์ง€์†์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜( Persistence Mechanism )์— ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด์ธ ๊ฒƒ์ด์—์š”. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ถœ์„ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ถ€๋ถ„( Persistence Layer )์— ๋งคํ•‘ํ•จ์œผ๋กœ์จ DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ธ๋ถ€ ๋‚ด์šฉ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ต๋‹ˆ๋‹ค. ์ด ๊ณ ๋ฆฝ์„ฑ์€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™( Single Responsibilty Principle )์— ๊ธฐ๋ฐ˜ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

์ด ํŒจํ„ด์€ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—, ์˜์†์„ฑ์ด ํ•„์š”ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด์—, ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

๋‹จ์ผ ์ฑ…์ž„ ์›์น™ : ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ชจ๋“  ์ปจํ…์ŠคํŠธ( ํด๋ž˜์Šค, ๊ธฐ๋Šฅ, ๋ณ€์ˆ˜ ๋“ฑ )์€ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ์™„์ „ํžˆ ์บก์Šํ™” ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์€ ํ•ด๋‹น ์ฑ…์ž„์— ๋งž์ถฐ ์กฐ์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด๋ž๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ง๋กœ๋Š” "ํด๋ž˜์Šค๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ด์œ ๋Š” ์˜ค์ง ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค"๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

โ–   ํ•„์š”์„ฑ

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ณตํ†ต์ ์œผ๋กœ ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋Š” ODBC๊ฐ€ ๋‚˜์™”์ง€๋งŒ ์—ฌ์ „ํžˆ ๋กœ์šฐ ๋ ˆ๋ฒจ์˜ API๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์žฅ๋ฒฝ์ด ๋†’์•˜๋˜ ๊ฒƒ์ด์—์š”.

์ด๋Ÿฐ ์ด์œ  ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋“ค์€ ์ •์ž‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ด์šฉํ• ์ง€์— ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ ๋ณด๋‹ค, ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ต๋ฅ˜ํ•˜๋Š”์ง€์— ๋” ์ดˆ์ ์„ ๊ธฐ์šธ์ผ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋˜ ๊ฒƒ์ด์—์š”.

์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋…ผ๋ฆฌ์  ๊ณ ๋ฏผ๋ณด๋‹ค ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ์— ๋” ๋งŽ์€ ์‹ ๊ฒฝ์„ ์ผ์—ˆ๋˜ ๊ฒƒ์ด์—์š”. ์ด๋Ÿฐ ์ด์œ ๋กœ DAO๋ž€ ๋Œ€์•ˆ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค.

โ–  ๊ธฐ๋Œ€ ํšจ๊ณผ

์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ํ•„์š”ํ•œ interface๋ฅผ DAO์—๊ฒŒ ๋˜์ง€๊ณ  DAO๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ˜ํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

โ–  ์žฅ, ๋‹จ์ 

DB์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ DAO๊ฐ€ ๋‹ด๋‹นํ•˜๋„๋ก ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค๋ฅผ DAO์—์„œ๋งŒ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์ˆ˜์˜ ์›๊ฒฉ ํ˜ธ์ถœ์„ ํ†ตํ•œ ์˜ค๋ฒ„ํ—ค๋”๋ฅผ VO๋‚˜ DTO๋ฅผ ํ†ตํ•ด ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๋‹ค์ˆ˜์˜ DB ํ˜ธ์ถœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. ๋˜ํ•œ ๋‹จ์ˆœํžˆ ์ฝ๊ธฐ๋งŒ ํ•˜๋Š” ์—ฐ์‚ฐ์ด๋ฏ€๋กœ ํŠธ๋žœ์ ์…˜ ๊ฐ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

๊ทธ๋Ÿฌ๋‚˜ Persistent Storage๋ฅผ ๋„ˆ๋ฌด ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•ด์„œ ์ž‘์„ฑ์„ ํ•˜๊ฒŒ ๋˜๋ฉด Persistent Storage๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์œ ์ง€ ๋ณด์ˆ˜์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์œ ์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•