Skip to content

Latest commit

ย 

History

History
201 lines (131 loc) ยท 3.69 KB

File metadata and controls

201 lines (131 loc) ยท 3.69 KB

Java ๋‹จ๊ณ„๋ณ„ ๋„์ „๊ณผ์ œ

STEP 0. ํ™˜๊ฒฝ (์™„๋ฃŒ)

  • MySQL ์‹คํ–‰
  • JDBC ๋“œ๋ผ์ด๋ฒ„ ์ถ”๊ฐ€
  • Spring โŒ / Tomcat โŒ


STEP 1. Java - JDBC (์™„๋ฃŒ)

  • 1-1. DriverManager๋กœ MySQL ์—ฐ๊ฒฐ
  • 1-2. Connection ํ•˜๋‚˜ ์žก๊ธฐ
  • 1-3. Statement / PreparedStatement ์‚ฌ์šฉ
  • 1-4. CRUD ์ฟผ๋ฆฌ ์ง์ ‘ ์‹คํ–‰
  • 1-5. autoCommit on/off ์‹คํ—˜
  • 1-6. commit / rollback ์ง์ ‘ ํ˜ธ์ถœ

๐ŸŽฏ ๋ชฉํ‘œ

  1. โ€œํŠธ๋žœ์žญ์…˜ = Connection ๋‹จ์œ„โ€ ์ฒด๊ฐ
  2. JDBC ๋ฐ˜๋ณต ์ž‘์—… ๊ฒฝํ—˜


STEP 2. Spring - JdbcTemplate ๋งŒ๋“ค๊ธฐ

๋…ธ๊ฐ€๋‹ค ์ œ๊ฑฐ ๋‹จ๊ณ„

  • 2-1. ๋ฐ˜๋ณต๋˜๋Š” JDBC ์ฝ”๋“œ ์ •๋ฆฌ
  • 2-2. Connection์€ ๋†”๋‘๊ธฐ -> DataSource TrasactionManager๋ฅผ ๊ฑฐ์น˜๋ฉฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์—†์•จ ๊ฒƒ
  • 2-3. PreparedStatement ์‹คํ–‰ ๋กœ์ง ์บก์Аํ™”
  • 2-4. ResultSet โ†’ ๊ฐ์ฒด ๋งคํ•‘ ๋ถ„๋ฆฌ

๐ŸŽฏ ๋ชฉํ‘œ

JdbcTemplate์„ ๊ตฌํ˜„ํ•˜๋ฉฐ Repository ๋‚ด์˜ ๋ฐ˜๋ณต ์ž‘์—… ์ตœ์†Œํ™”



STEP 3. DataSource

์ปค๋„ฅ์…˜ ์ƒ์„ฑ ์ฑ…์ž„ ๋ถ„๋ฆฌ

  • 3-1. DataSource ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
  • 3-2. DriverManager ๊ธฐ๋ฐ˜ ๊ตฌํ˜„์ฒด
  • 3-3. JdbcTemplate์ด DataSource๋งŒ ์˜์กดํ•˜๋„๋ก ๋ณ€๊ฒฝ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œConnection ์ƒ์„ฑ์€ ์ธํ”„๋ผ ์ฑ…์ž„โ€



STEP 4. Transaction Manager

ํ•ต์‹ฌ ๊ตฌ๊ฐ„

  • 4-1. startTransaction, commit, rollback์„ ์ œ๊ณตํ•˜๋Š” TransactionManager ์ƒ์„ฑ (with ThreadLocal)
  • 4-2. ThreadLocal์„ ๊ด€๋ฆฌํ•˜๋Š” ConnectionThreadLocal ์ƒ์„ฑ
  • 4-3. DataSource์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋„๋ก ๊ตฌํ˜„
  • 4-4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ Connection ์ฝ”๋“œ ์ œ๊ฑฐ
  • 4-5. MyJdbcTemplate์—์„œ ์ปค๋„ฅ์…˜์„ ์ง์ ‘ ๋ฐ›์ง€ ์•Š๊ณ  MyDataSource๋ฅผ ๋ฐ›๋„๋ก ๋ณ€๊ฒฝ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ์ œ๊ฑฐํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์— Connection ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐโ€

"MyJdbcTemplate ๋‚ด๋ถ€์—์„œ DataSource๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๊ธฐ"



STEP 5. Transactional

์„ ์–ธ์  ํŠธ๋žœ์žญ์…˜

  • 5-1. @MyTransactional ์ •์˜
  • 5-2. ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐ์ง€ ๋กœ์ง ์ถ”๊ฐ€
  • 5-3. ํŠธ๋žœ์žญ์…˜ Proxy ๋กœ์ง ์ถ”๊ฐ€
  • 5-4. ํŠธ๋žœ์žญ์…˜ ์ ์šฉ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œํŠธ๋žœ์žญ์…˜ ํ”„๋ก์‹œ ๋กœ์ง ์ ์šฉ ๊ณผ์ • ์ดํ•ดโ€



STEP 6. HTTP ์„œ๋ฒ„ (Mini Tomcat ์‹œ์ž‘)

์›น์˜ ์‹ค์ฒด

  • 6-1. Socket ๊ธฐ๋ฐ˜ HTTP ์„œ๋ฒ„
  • 6-2. Request Line ํŒŒ์‹ฑ
  • 6-3. Header / Body ํŒŒ์‹ฑ
  • 6-4. Response ์ง์ ‘ ์ž‘์„ฑ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œHTTP๋Š” ๋ฌธ์ž์—ด ํ”„๋กœํ† ์ฝœโ€



STEP 7. Thread ๋ชจ๋ธ

์›น + ํŠธ๋žœ์žญ์…˜ ์—ฐ๊ฒฐ ์ค€๋น„

  • 7-1. ์š”์ฒญ 1๊ฐœ = ์Šค๋ ˆ๋“œ 1๊ฐœ
  • 7-2. ExecutorService ์‚ฌ์šฉ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œ์™œ ThreadLocal์ด ๋จนํžˆ๋Š”์ง€โ€



STEP 8. Dispatcher (Servlet ์—ญํ• )

Spring MVC ํ•ต์‹ฌ

  • 8-1. ๋ชจ๋“  ์š”์ฒญ์˜ ๋‹จ์ผ ์ง„์ž…์ 
  • 8-2. URL โ†’ Handler ๋งคํ•‘
  • 8-3. Controller ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

๐ŸŽฏ ๋ชฉํ‘œ

โ€œDispatcherServlet์˜ ๋ณธ์งˆโ€



STEP 9. MVC ๊ตฌ์กฐ ์™„์„ฑ

Spring MVC ๋ผˆ๋Œ€

  • 9-1. Controller
  • 9-2. Argument Resolver (๊ฐ„๋‹จํžˆ)
  • 9-3. Interceptor

๐ŸŽฏ ๋ชฉํ‘œ

โ€œ์›น ์š”์ฒญ ํ๋ฆ„ ์™„์ „ ์ดํ•ดโ€



STEP 10. ์›น + ํŠธ๋žœ์žญ์…˜ ์—ฐ๊ฒฐ (์™„์„ฑ)

์ตœ์ข… ํผ์ฆ

  • 10-1. ์š”์ฒญ ์‹œ์ž‘ โ†’ Transaction begin
  • 10-2. Controller ์‹คํ–‰
  • 10-3. ์˜ˆ์™ธ ์‹œ rollback
  • 10-4. ์ •์ƒ ์‹œ commit

๐ŸŽฏ ๋ชฉํ‘œ

โ€œ@Transactional + Spring MVC ๊ตฌ์กฐ ์ฒด๋“โ€



STEP 6. Connection Pool (๋ณด๋ฅ˜)

์„ฑ๋Šฅ & ์ž์› ๊ด€๋ฆฌ ๋‹จ๊ณ„

  • 4-1. ์ปค๋„ฅ์…˜ ๋ฏธ๋ฆฌ ์ƒ์„ฑ
  • 4-2. idle / active pool ๊ด€๋ฆฌ
  • 4-3. max size ์ œํ•œ
  • 4-4. ์ปค๋„ฅ์…˜ ๋ฐ˜๋‚ฉ ์ฒ˜๋ฆฌ
  • 4-5. Pool ๊ธฐ๋ฐ˜ DataSource ๊ตฌํ˜„

๐ŸŽฏ ๋ชฉํ‘œ

โ€œ์™œ ์ปค๋„ฅ์…˜ ํ’€ ์—†์œผ๋ฉด ์„œ๋น„์Šค๊ฐ€ ์ฃฝ๋Š”์ง€โ€



๐Ÿ”ฅ ์ตœ์ข… ์ƒํƒœ

HTTP ์š”์ฒญ
 โ†’ Thread
   โ†’ Dispatcher
     โ†’ Interceptor
       โ†’ @Transactional
         โ†’ TransactionManager
           โ†’ Connection Pool
             โ†’ DataSource
               โ†’ JDBC
                 โ†’ MySQL