Spring 3๊ฐ€์ง€ ๊ณ„์ธต ๊ตฌ์กฐ (ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต, ์„œ๋น„์Šค ๊ณ„์ธต, ๋ฐ์ดํ„ฐ์•ก์„ธ์Šค ๊ณ„์ธต)

2021. 11. 10. 09:42ใ†Spring

728x90

1. Spring ๊ธฐ๋ณธ 3๊ฐ€์ง€ ๊ณ„์ธต 

๋Œ€๋ถ€๋ถ„ ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ„์ธตํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. 

๊ธฐ๋ณธ์ ์ธ ๊ณ„์ธต์œผ๋กœ๋Š” ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต(Presentation Layer), ์„œ๋น„์Šค ๊ณ„์ธต(Service Layer), ๋ฐ์ดํ„ฐ์•ก์„ธ์Šค ๊ณ„์ธต(Data Access Layer) 3๊ฐ€์ง€ ๊ณ„์ธต๊ณผ ๋ชจ๋“  ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค, 

 

๊ฐ๊ฐ์˜ ๊ณ„์ธต์€ ๊ณ„์ธต๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•˜๊ณ , ๊ฐ ๊ณ„์ธต์—์„œ ๋‹ด๋‹นํ•ด์•ผํ•  ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋‹ค. 

 

์œ„์˜ ์„ธ๊ฐ€์ง€ ๊ณ„์ธต๋“ค์€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ด์•ผํ•˜๊ณ , ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ๊ณ„์ธต ์‚ฌ์ด์—๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. 

 

 

1๏ธโƒฃ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต (Presentation Layer)

ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์€ ๋ธŒ๋ผ์šฐ์ €์ƒ์˜ ์›น ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

์„œ๋น„์Šค ๊ณ„์ธต๊ณผ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์—์„œ ๋ฐœ์ƒํ•˜๋Š” Exception์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , 

์ตœ์ข… UI์—์„œ ํ‘œํ˜„ํ•ด์•ผํ•  ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. 

์ตœ์ข… UI์—์„œ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๊ธฐ๋Šฅ์„ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์—์„œ ์ œ๊ณตํ•œ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ตœ์ข… UI ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ปจํŠธ๋กค๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

@Controller ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

2๏ธโƒฃ ์„œ๋น„์Šค ๊ณ„์ธต (Service Layer)

์„œ๋น„์Šค ๊ณ„์ธต์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ์™€ ๋น„์ง€๋‹ˆ์Šค์™€ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ ๋ชจ๋ธ์˜ ์ ํ•ฉ์„ฑ ๊ฒ€์ฆํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค. 

์„œ๋น„์Šค ๊ณ„์ธต์€ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต๊ณผ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๊ณ„์ธต๋“ค๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

Service ์ธํ„ฐํŽ˜์ด์Šค์™€ @Service ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

3๏ธโƒฃ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต (Data Access Layer)

๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์€ ์˜๊ตฌ ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋กœ์ง์„ ๊ฐ์ฒดํ™”ํ•œ๋‹ค. 

๋ฐ์ดํ„ฐ์˜ CRUD(๋“ฑ๋ก, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ)๋ฅผ ํ•œ๋‹ค. 

ORM(Object Relational Mapping) ํ”„๋ ˆ์ž„์›Œํฌ(Mybatis, Hibernate)๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณ„์ธต 

@Repostiory ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ 

 

 

4๏ธโƒฃ ๋„๋ฉ”์ธ ๋ชจ๋ธ ํด๋ž˜์Šค 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—”ํ‹ฐํ‹ฐ์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์œผ๋กœ VO(Value Object) ๋˜๋Š” DTO(Data Transfer Object)๊ฐ์ฒด์— ํ•ด๋‹นํ•œ๋‹ค. 

๋„๋ฉ”์ธ ๋ชจ๋ธ ํด๋ž˜์Šค๋Š” 3๊ฐœ์˜ ๊ณ„์ธต ์ „์ฒด์— ๊ฑธ์ณ ์‚ฌ์šฉ๋œ๋‹ค.

private๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ getter, setter ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90