JdbcTemplate

๊น€์˜ํ•œ๋‹˜ ์Šคํ”„๋ง DB 2ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  ํ™œ์šฉ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์žฅ์ 

  • ์„ค์ •์˜ ํŽธ๋ฆฌํ•จ
    • JdbcTemplate์€ spring-jdbc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์Šคํ”„๋ง์œผ๋กœ JDBC๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ„๋„์˜ ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ˜๋ณต ๋ฌธ์ œ ํ•ด๊ฒฐ
    • JdbcTemplate์€ Template Callback ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ JDBC๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ˜๋ณต ์ž‘์—…์„ ๋Œ€์‹œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.
    • ๊ฐœ๋ฐœ์ž๋Š” SQL์„ ์ž‘์„ฑํ•˜๊ณ , ์ „๋‹ฌํ•  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ์‘๋‹ต ๊ฐ’์„ ๋งคํ•‘ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
    • ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ˜๋ณต ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.
      • Connection ํš๋“
      • statement๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์‹คํ–‰
      • ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋ณตํ•˜๋„๋ก ๋ฃจํ”„๋ฅผ ์‹คํ–‰
      • Connection ์ข…๋ฃŒ, statement, resultset ์ข…๋ฃŒ
      • Transaction์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ Connection ๋™๊ธฐํ™”
      • ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ, ์Šคํ”„๋ง ์˜ˆ์™ธ ๋ณ€ํ™˜๊ธฐ ์‹คํ–‰

๋‹จ์ 

  • ๋™์  SQL์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

@Transactional์˜ ์›๋ฆฌ

๊น€์˜ํ•œ๋‹˜ ์Šคํ”„๋ง DB 2ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  ํ™œ์šฉ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” @Transactional ์• ๋…ธํ…Œ์ด์…˜์€ ๋กœ์ง์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ์ปค๋ฐ‹ํ•˜๋„๋ก ๋™์ž‘ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ @Transactional ์• ๋…ธํ…Œ์ด์…˜์„ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํ”„๋ง์€ ํ…Œ์ŠคํŠธ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹คํ–‰ํ•˜๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ž๋™์œผ๋กœ ๋กค๋ฐฑ์‹œ์ผœ ๋ฒ„๋ฆฐ๋‹น

@Repository์˜ ๊ธฐ๋Šฅ (์ฐธ๊ณ : @Service๋Š” ComponentScan์˜ ๋Œ€์ƒ์ด๋ผ๋Š” ๊ฑธ ์•Œ๋ ค์ค„ ๋ฟ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๊ธฐ๋Šฅ์€ ์—†๋‹ค)

๊น€์˜ํ•œ๋‹˜ ์Šคํ”„๋ง DB 2ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  ํ™œ์šฉ ๊ฐ•์˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

  • @Respository๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” ComponentScan์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.
  • @Respository๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” ์˜ˆ์™ธ ๋ณ€ํ™˜ AOP์˜ ์ ์šฉ ๋Œ€์ƒ์ด ๋œ๋‹ค.
    • ์Šคํ”„๋ง๊ณผ JPA๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํ”„๋ง์€ JPA ์˜ˆ์™ธ ๋ณ€ํ™˜๊ธฐ(PersistenceExceptionTranslator)๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.
    • ์˜ˆ์™ธ ๋ณ€ํ™˜ AOP ํ”„๋ก์‹œ๋Š” JPA ๊ด€๋ จ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด JPA ์˜ˆ์™ธ ๋ณ€ํ™˜๊ธฐ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์˜ˆ์™ธ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ