๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

Java ๊ด€๋ จ ๋ฉด์ ‘ ์ค€๋น„ 1

by ์ฃผ๋ฐœ2 2020. 3. 26.
๋ฐ˜์‘ํ˜•

DataSource

์ˆœ์ˆ˜ jdbc๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ์„ ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค connection์„ ๋งบ๊ณ  ๋Š๋Š” ์ž‘์—…์„ ํ•œ๋‹ค. ์ด connection์„ ๋งบ๊ณ  ๋Š๋Š” ์ž‘์—…์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ connection์„ ์ƒ์„ฑํ•ด ๋‘๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ connection์„ ์ œ๊ณตํ•˜๊ณ  ๋Œ๋ ค๋ฐ›๋Š”๋‹ค. ์ด connection๋“ค์„ ๋ชจ์•„๋‘๋Š” ์žฅ์†Œ๋ฅผ connection pool์ด๋ผ ํ•˜๋ฉฐ, โ€‹Datasource๋Š” java ์—์„œ connection pool์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

โ€‹

โ€‹

โ€‹

JPA(Java Persistence API)

์ž๋ฐ” ํ”Œ๋žซํผ SE์™€ ์ž๋ฐ” ํ”Œ๋žซํผ EE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฐ” API์ด๋‹ค.

JPA๋ž€ DB ํ…Œ์ด๋ธ”๊ณผ ์ž๋ฐ” ๊ฐ์ฒด ์‚ฌ์ด์˜ ๋งคํ•‘์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ORM์ด๋ž€ ๊ธฐ์ˆ ์˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ JPA์—๋Š” ๊ฐ์ฒด์™€ DB ์‚ฌ์ด์˜ ๋งคํ•‘์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•ด์•ผํ•˜๋Š”์ง€ ๊ธฐ์ˆ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์ž๋ฐ”์˜ ํด๋ž˜์Šค์™€ DB์˜ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋ž€ ๋œป

โ€‹

โ€‹

โ€‹

ORM(Object Relational Mapping) - ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ„์˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•.

๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "๊ฐ€์ƒ" ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

โ€‹

โ€‹

โ€‹

ํผ์‹œ์Šคํ„ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ(Persistence Framework)

๋ฐ์ดํ„ฐ์˜ ์ €์žฅ, ์กฐํšŒ, ๋ณ€๊ฒฝ, ์‚ญ์ œ(CRUD)๋ฅผ ๋‹ค๋ฃจ๋Š” ํด๋ž˜์Šค ๋ฐ ์„ค์ • ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

ํผ์‹œ์Šคํ„ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณต์žกํ•จ์ด๋‚˜ ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด ๊ฐ„๋‹จํ•œ ์ž‘์—…๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™๋˜๋Š” ์‹œ์Šคํ…œ์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•ˆ์ •์ ์ธ ๊ตฌ๋™๋„ ๋ณด์žฅํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

MyBatis(๋งˆ์ด๋ฐ”ํ‹ฐ์Šค)

์ž๋ฐ” ํผ์‹œ์Šคํ„ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•˜๋‚˜๋กœ, XML ์„œ์ˆ ์ž๋‚˜ ์–ด๋…ธํ…Œ์ด์…˜(@Annotation)์„ ์‚ฌ์šฉํ•˜์—ฌ SQL๋ฌธ์œผ๋กœ ๊ฐ์ฒด๋“ค์„ ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค. ์•„ํŒŒ์น˜ ๋ผ์ด์„ ์Šค 2.0์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด๋‹ค.

โ€‹

โ€‹

โ€‹

Hibernate(ํ•˜์ด๋ฒ„๋„ค์ดํŠธ)

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ž€ JPA ํ”„๋กœ๋ฐ”์ด๋”์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. JPA ํ”„๋กœ๋ฐ”์ด๋”๋Š” JPA์˜ ํ‘œ์ค€์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด JPA๋Š” DB์™€ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ์ œ๊ณตํ•˜๊ณ  JPA ํ”„๋กœ๋ฐ”์ด๋”๋Š”(ํ•˜์ด๋ฒ„๋„ค์ดํŠธ) ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด์ฃ .

โ€‹

โ€‹

โ€‹

MVC1 , MVC2 ํŒจํ„ด

Model, View, Controller์˜ ์ค„์ž„๋ง๋กœ์จ MVC๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

Model

- ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์ƒํƒœ, ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค.

View

- ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š”๊ฒƒ

Controller

- ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋œปํ•œ๋‹ค.

โ€‹

MVC1

- ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ JSP๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ตฌ์กฐ.

+ ๋‹จ์ˆœ ํŽ˜์ด์ง€ ์ž‘์„ฑ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(๊ฐœ๋ฐœ์ด ์‰ฌ์›€)

- ๋ณต์žกํ•ด์ง€๋ฉด ๊ฐœ๋ฐœ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.

- ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ๊ฐ„ ์—ญํ•  ๋ถ„๋‹ด์ด ์–ด๋ ค์›Œ์ง„๋‹ค.

https://nickjoit.tistory.com/9

โ€‹

โ€‹

MVC2

- ์›น๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์„ ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ์ด ๋ฐ›๊ณ , ์„œ๋ธ”๋ฆฟ์€ ์š”์ฒญ์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ JSP ํŽ˜์ด์ง€๋กœ

ํฌ์›Œ๋”ฉ ํ•œ๋‹ค.

- ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ, ์‘๋‹ต์ฒ˜๋ฆฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ๋ถ€๋ถ„์„ ๋ชจ๋“ˆํ™”์‹œํ‚จ ๊ตฌ์กฐ๋‹ค.

+ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด๋„ Controller์™€ View์˜ ๋ถ„๋ฆฌ๋กœ ๊ฐœ๋ฐœ, ์œ ์ง€๋ณด์ˆ˜, ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค.

- ๊ฐœ๋ฐœ์ด ์–ด๋ ต๋‹ค.(๋†’์€ ์ˆ˜์ค€์˜ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.)

https://nickjoit.tistory.com/9

โ€‹

โ€‹

โ€‹

์Šคํ”„๋ง MVC

https://nickjoit.tistory.com/9

https://nickjoit.tistory.com/9

โ€‹

โ€‹

โ€‹

๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๊ณ , ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

โ€‹

โ€‹

References

https://deepweller.tistory.com/6

https://dev-troh.tistory.com/150

https://ko.wikipedia.org/wiki/%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC

https://nickjoit.tistory.com/9

https://seongmun-hong.github.io/spring/MVC1-MVC2

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€