๐Ÿ‘ฉ‍๐Ÿ’ป Learn programming/Spring

[Spring] Client, Server, DB์˜ ํ๋ฆ„ ์ตํžˆ๊ธฐ ์œ„ํ•œ ๊ฐœ๋… ์ •๋ฆฌ

๋ฐ๊ตฅ์ž‰ 2022. 5. 25. 13:57

โ— Spring์˜ ๊ตฌ์กฐ   

1. Controller : ๊ฐ€์žฅ ๋ฐ”๊นฅ ๋ถ€๋ถ„, ์š”์ฒญ/์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•จ.
2. Service : ์ค‘๊ฐ„ ๋ถ€๋ถ„, ์‹ค์ œ ์ค‘์š”ํ•œ ์ž‘๋™์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋Š” ๋ถ€๋ถ„
3. Repo : ๊ฐ€์žฅ ์•ˆ์ชฝ ๋ถ€๋ถ„, DB์™€ ๋งž๋‹ฟ์•„ ์žˆ์Œ. (Repository, Entity)

 

 


โœ”๏ธ RDBMS

- RDBMS(Relational DataBase Management System), ์ค„์—ฌ์„œ RDB
- ์ปดํ“จํ„ฐ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ 
- ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
- RDBMS์˜ ์ข…๋ฅ˜ : MySQL, PostgreSQL, Oracle Database(์œ ๋ฃŒ)

 

โœ”๏ธ H2

- RDBMS์˜ ํ•œ ์ข…๋ฅ˜
- In-memory DB๋กœ, ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ์—๋งŒ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถ”๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋จ.
= ์„œ๋ฒ„๊ฐ€ ์ผœ์ ธ์žˆ๋Š” ๋™์•ˆ์—๋งŒ ์ž‘๋™!

 

โœ”๏ธ SQL

- ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ €์žฅํ•˜๊ณ , ๋ณ€๊ฒฝํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฌธ๋ฒ•

โœ”๏ธ JPA

- ์Šคํ”„๋ง์€ ์ž๋ฐ”๋กœ ์ž‘๋™, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” SQL๋กœ ์ž‘๋™
- JPA(Sparing Data JPA)๋Š” ๊ทธ ์‚ฌ์ด ์ž๋ฐ”๋ฅผ ์œ„ํ•œ ๋ฒˆ์—ญ๊ธฐ ์—ญํ• ์„ ํ•จ
- Java๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด SQL๋กœ ๋ฒˆ์—ญํ•ด์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด ๊ฑฐ์˜ ์™„๋ฒฝํ•˜๊ฒŒ ๋“ค์–ด์žˆ์Œ.

 

"ํ…Œ์ด๋ธ”"์€ Domain or Entity, "SQL"์€ Repository

 

โœ”๏ธ Repository

- JPA๋ฅผ ์ž‘๋™์‹œํ‚ค๋Š” ๋งค๊ฐœ์ฒด
- JPA๋Š” Repository๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
๋”๋ณด๊ธฐ

Tabel์— SQL๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, Domain์— Repository๋กœ ์กฐํšŒํ•œ๋‹ค.?


โœ”๏ธ API

- ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ๊ฐ„์˜ ์•ฝ์†
- ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •ํ•œ๋Œ€๋กœ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ(Request)์„ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‘๋‹ต(Response)์„ ๋ฐ˜ํ™˜

 

โœ”๏ธ Lombok

- ์ฝ”๋“œ ์ ˆ์•ฝ
- ์ž๋ฐ” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ/์ƒ์„ฑ์ž ๋“ฑ์„ ์ž๋™์ƒ์„ฑํ•ด์คŒ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

โœ”๏ธ DTO

- DTO(Data Transfer Object)๋Š” ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด