ORM

MVC ๋ชจ๋ธ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Model View Controller ์„ธ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•ด๋†“์€ ๋ฐฉ๋ฒ•
๋ชจ๋ธ1 : JSP (view) + JavaBean(Model) === ๊ตฌ์กฐ๊ฐ€๋‹จ์ˆœํ•˜๋‹ค. but, ์ถœ๋ ฅ๊ณผ ๋กœ์ง ์ฝ”๋“œ๊ฐ€ ์„์—ฌ jsp์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.ํ”„๋ก ํŠธ์™€ ๋ฒก์—”๋“œ๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ๋ถ„์—…์ด ์•ˆ์ข‹๋‹ค. ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค.
๋ชจ๋ธ2 : JavaBean(Model) + JSP(View) + ์„œ๋ธ”๋ฆฟ(Controler) === MVC : ๋ทฐ์™€ ๋กœ์ง์˜ ๋ถ„๋ฆฌ๋กœ ๋ชจ๋ธ1์— ๋น„ํ•ด ๋œ ๋ณต์žกํ•˜๊ณ , ๋ถ„์—…์ด ์šฉ์ดํ•˜๊ณ  ๋ณด์ˆ˜๊ฐ€ ์‰ฝ๋‹ค. ๋ชจ๋ธ 1์— ๋น„ํ•ด ์Šต๋“์ด ์–ด๋ ต๊ณ  ์ž‘์—…๋Ÿ‰์ด ๋งŽ๋‹ค.
MVC์˜ ํ๋ฆ„ :
  1. ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ์ปจํŠธ๋กค๋Ÿฌ์— ๋ณด๋‚ธ๋‹ค.
  1. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ชจ๋ธ์€ ์•Œ๋งž์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  1. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ๋ทฐ๋ฅผ ์„ ํƒํ•œ๋‹ค.
  1. ์„ ํƒ๋œ ๋ทฐ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋งž๋Š” ๊ฒฐ๊ณผ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค€๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ๋ฐ์ดํ„ฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค.
Model === ๊ฐ’๊ณผ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด.
View === ๋ชจ๋ธ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐํ™”
Controller === ๋ชจ๋ธ ๊ฐ์ฒด๋กœ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ์–ด, ๋ทฐ์™€ ๋ชจ๋ธ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌ.

why MVC?

๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ฝ”๋“œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ์œ„ํ•ด, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„์ž๋“ค ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด

MVC์—์„œ ์ž์ฃผ ์‹ค์ˆ˜ํ•˜๋Š” ๋ถ€๋ถ„

  1. Model์—์„œ View์˜ ์ ‘๊ทผ ๋˜๋Š” ์—ญํ•  ์ˆ˜ํ–‰
  1. View์—์„œ ์ผ์–ด๋‚˜๋Š” '๊ณผํ•œ'๊ฐ’ ๊ฒ€์ฆ๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ -> ๋‹จ์ผ์ฑ…์ž„์›์น™ ์œ„๋ฐ˜
  1. View์—์„œ ์ผ์–ด๋‚˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

Sequelize

db.define ์Šคํ‚ค๋งˆ์ž‘์„ฑ
Sequelize.INTEGER ๋“ฑ ํƒ€์ž… ์ •ํ•ด์ค„์ˆ˜์žˆ๋‹ค.
sync() ์ฝ”๋“œ์™€ ์Šคํ‚ค๋งˆ๋ฅผ ์ผ์น˜
.then์„ ํ†ตํ•ด ๋น„๋™๊ธฐ์ž‘์—…
.create === INSERT INTO ~~
.findAll === SELECT * ~~

Association

JOIN ๊ธฐ๋Šฅ
HasOne : ์ผ๋Œ€์ผ BelongsTo : A์•ˆ์— B HasMany :์ผ๋Œ€๋‹ค BelongsToMany :๋‹ค๋Œ€๋‹ค

transaction

์€ํ–‰์—…๋ฌด์™€ ๊ฐ™์€ ์ž‘์—…

short.ly

URL์„ ์งง๊ฒŒ ๋‹จ์ถ•์‹œ์ผœ์ฃผ๋Š” ์•ฑ
(POST links ์ปจํŠธ๋กค๋Ÿฌ)
  1. URL์„ ํฌ์ŠคํŠธ ์š”์ฒญ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. {url:codestate.com}
  1. ์š”์ฒญ์— ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ db์— ๋ ˆ์ฝ”๋“œ๋กœ ์ƒ์„ฑํ•จ.
  • url
  • url์˜ ์•„์ด๋””
  • ํ™ˆํŽ˜์ด์ง€ ํƒ€์ดํ‹€
  • ๋ฐฉ๋ฌธํšŸ์ˆ˜ -> ์—…๋ฐ์ดํŠธ
  1. ๋งŒ์•ฝ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” url์ด๋ผ๋ฉด ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ„๋‹ค.
(Get links/:id ์ปจํŠธ๋กค๋Ÿฌ) 4. links/1 get์š”์ฒญ์ด ์˜ค๋ฉด 5. id๋ฅผ ํ†ตํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒ 6. ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ url์„ 7. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚ด 8. ๊ทธ๋ฆฌ๊ณ  visits ํ•„๋“œ๊ฐ’ 1์ถ”๊ฐ€.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

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

devdependencies์™€ dependencies์˜ ์ฐจ์ด

dev~๋Š” ๊ฐœ๋ฐœํ• ๋•Œ๋งŒ ํ•„์š”ํ•œ ๋””ํŽœ๋˜์‹œ..

๋ชจ๋ธ๋ช…

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ํ•˜๋ฉด ๋ณต์ˆ˜ํ˜•ํƒœ๊ฐ€๋˜๋ฏ€๋กœ ๋‹จ์ˆ˜๋ฅผ์“ด๋‹ค.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ณต๊ตฌ

npx sequelize-cli dbLmigrate:undo:all --to XXXXXXXXX