๐Ÿ ๊ธฐํƒ€/์ฝ”๋“œํ”„๋ ˆ์†Œ ์ฒดํ—˜๋‹จ_BE

[Spring Boot] Spring Boot์™€ MyBatis์˜ ์—ฐ๋™

Dhey 2022. 3. 19. 03:01
๋ฐ˜์‘ํ˜•

 

# Data Access Layer

 

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์กฐํšŒ ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์ธต

- Spring์—์„œ๋Š” Mapper Notation์ด๋‚˜ Repository Annotation์„ ์‚ฌ์šฉํ•œ๋‹ค.

- Service ๊ณ„์ธต๊ณผ Database ์‚ฌ์ด์˜ ์ถ”์ƒํ™” ๋œ ๊ณ„์ธต์ด๋‹ค.

- Database ๊ธฐ์ˆ ์ด ๋ณ€๊ฒฝ ๋˜๋ฉด Data Access Layer์˜ ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, Service ๊ณ„์ธต์˜ ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์Šคํ”„๋ง์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ 

  - JDBC(Java Database Connectivity): Database์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ Java์˜ ํ‘œ์ค€ API

  - JDBC Template: JDBC๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Spring์—์„œ ์ œ๊ณตํ•˜๋Š” API

    (* JDBC์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ low ๋ ˆ๋ฒจ์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ, JDBC Template์„ ํ™œ์šฉํ•˜๋ฉด ํ›จ์”ฌ ์ ์€๋Ÿ‰์˜ ์ฝ”๋“œ๋ฅผ. ์‚ฌ์šฉํ•˜์—ฌ Database์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค)

  - SQL Mapper

    : SQL์˜  input or output๊ณผ Java ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ 

      Java์—์„œ SQL Mapper ์ ์šฉ์„ ์œ„ํ•ด MyBatis๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 

  - ORM(Object Rellational Mapping)

     : RDBMS์˜ ํ…Œ์ด๋ธ”๊ณผ Java ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ 

      ORM Framework๊ฐ€ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , SQL์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.

      Java, Spring์—์„œ ORM ์ ์šฉ์„ ์œ„ํ•ด Hibernate์™€ Spring Data JPA๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

Spring Boot์—์„œ MyBatis๋ฅผ ํ™œ์šฉ(์„ค์ •?)ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€ ์‚ฌ์ „ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.  

  1. *Maven ์˜์กด์„ฑ ์„ค์ •

     : MyBatis ๋ฐ H2 Database์— ๋Œ€ํ•œ ์˜์กด์„ฑ

  2. Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •

    : appication.properties ์„ค์ •

 

 

# Maven์ด๋ž€?

   : Java ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ

     (๋นŒ๋“œ: ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SW ์‚ฐ์ถœ๋ฌผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •)

 

* Maven์˜ 2๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ

  1. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๋ฐ ๋นŒ๋“œ ๊ด€๋ฆฌ

  2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ๊ด€๋ฆฌ 

      - ์‚ฌ์šฉํ•  ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜๋ฉด ์ž๋™ ๋‹ค์šด๋กœ๋“œ ํ›„ ์‚ฌ์šฉ

      - ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Maven Repository์— ๋“ฑ๋ก ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

* Maven Central Repository: Maven์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์•™ Repository

 

* Maven pom.xml

   : Maven์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” XML ํŒŒ์ผ

     - ํ”„๋กœ์ ํŠธ์˜ ์ •๋ณด, ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ •๋ณด, ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ ๋˜๋Š” ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

 


 

# H2 Database

  - ๊ฒฝ๋Ÿ‰ RDBMS (๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค)

  - ๋ณ„๋„์˜ ์„ค์น˜ ์—†์ด Maven ์˜์กด์„ฑ๋งŒ์œผ๋กœ Spring Boot์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

  - ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

# MyBatis Mapper์˜ ๋™์ž‘

  - Appication Layer์—์„œ๋Š” Mapper ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ํ˜ธ์ถœ๋œ Mapper ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ์ ์ ˆํ•œ Mapper xml ์•ˆ์— SQL๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค.

  - Mapper ์ธํ„ฐํŽ˜์ด์Šค์™€ SQL ์‚ฌ์ด์—์„œ๋Š” DTO ๋˜๋Š” ๋‹จ์ผ Value๊ฐ€ ์„œ๋กœ ์ „์†ก๋œ๋‹ค.

 

 


 

์ฝ”๋“œํ”„๋ ˆ์†Œ Java ์›น ๊ฐœ๋ฐœ ์ฒดํ—˜๋‹จ ํ™œ๋™ ์ค‘ 'Spring Boot๋ฅผ ํ™œ์šฉํ•œ ์›น ๊ฐœ๋ฐœ ์ดˆ๊ธ‰' ์ด๋Ÿฌ๋‹ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :)
์ฝ”๋“œํ”„๋ ˆ์†Œ URL: https://www.codepresso.kr/

 

์ปค๋ฆฌ์–ด ์™„์„ฑ ์‹ค๋ฌด IT ๊ต์œก ํ”Œ๋žซํผ , ์ฝ”๋“œํ”„๋ ˆ์†Œ(codepresso)

๊ธฐ์—…์ด ์›ํ•˜๋Š” ๋ชจ๋“  IT ์ง€์‹, ์ฝ”๋“œํ”„๋ ˆ์†Œ์—์„œ ๋งŒ๋‚˜์„ธ์š”.

www.codepresso.kr

๋ฐ˜์‘ํ˜•