Note.6 Data / MyBatis

Jayยท2023๋…„ 2์›” 7์ผ
1

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
6/14
post-thumbnail

๐Ÿ“Œ ์ค€๋น„ / ์„ธํŒ…

๐Ÿ“– ์ค€๋น„

๊ทธ ๋‹ค์Œ ์ดํด๋ฆฝ์Šค์—์„œ ๊ตฌ๋™ํ•œ sql์„ ๋”๋ธ”ํด๋ฆญํ•ด์„œ ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค.

๐Ÿ“– sql ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

new -> other์„ ํ†ตํ•ด์„œ board.sql ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

๊ทธ๋‹ค์Œ ์ƒ๋‹จ์—์„œ sqlํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

๊ทธ ๋‹ค์Œ sql ํŒŒ์ผ์•ˆ์— ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ•ด์ค€๋‹ค.

int - ์ˆซ์žํ˜• ํƒ€์ž…
auto_increment - ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉฐ ๋“ค์–ด๊ฐ€๋Š” ํ‚ค์›Œ๋“œ
default - ๋”ฐ๋กœ ๊ฐ’์„ ์ฃผ์ง€์•Š๋Š”ํ•œ ์ง€์ •๋œ ์ดˆ๊ธฐ๊ฐ’ ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๊ธฐ
datetime - ์‹œ๊ฐ„์„ ๋„ฃ์–ด์ฃผ๋Š” ํƒ€์ž…
now() - sql ํ”„๋กœ๊ทธ๋žจ ์•ˆ ํ˜„์žฌ ์‹œ๊ฐ„ ์ž๋™ ๋„ฃ์–ด์ฃผ๋Š” ํ•จ์ˆ˜

๊ทธ ๋‹ค์Œ ๋“œ๋ž˜๊ทธํ•ด์„œ Alt + X ๋กœ ์‹คํ–‰ ํ•ด์ค€๋‹ค

์ด๋ ‡๊ฒŒ ํŒŒ๋ž‘์ƒ‰ ์ฒดํฌ Success๊ฐ€ ๋‚˜์˜ค๋ฉด ์„ฑ๊ณตํ•œ๊ฒƒ์ด๋‹ค.

๐Ÿ“– SQL ์ž…๋ ฅ๋ฌธ์„ ์จ๋ณด์ž

๊ฒŒ์‹œํŒ ๋ฒˆํ˜ธ์™€, ์กฐํšŒ์ˆ˜, ๋‚ ์งœ๋Š” ๊ธฐ๋ณธ default๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๋ชฉ ๋‚ด์šฉ ์ž‘์„ฑ์ž๋งŒ ์ž‘์„ฑํ•œ๋‹ค.

insert๋ฅผ ์‹คํ–‰ํ•˜๊ณ  select๋ฅผ ํ†ตํ•ด ๋ณด๋ฉด Result์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.


๐Ÿ“Œ Data / MyBatis

๐Ÿ“– Java DAO๋ฅผ ํ†ตํ•ด DataBase ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ

๋จผ์ € DAO Class๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

๊ธฐ์กด ์šฐ๋ฆฌ๋Š” DAOํด๋ž˜์Šค ์•ˆ์— Java ์ฝ”๋“œ์™€ SQL๋ฌธ์žฅ์„ ๋‹ค ๋„ฃ์–ด์„œ ์ง„ํ–‰ํ–ˆ๋‹ค.
์ด๋Ÿฌ๋‹ค ๋ณด๋ฉด ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

  1. ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค - SQL์„ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด Java์ฝ”๋“œ๋ฅผ ๋‹ค ์—ด์–ด์„œ ์ผ์ผ์ด ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค.
  2. ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค - ๋‹ค ์ˆ˜์ •ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ฒŒ ๋˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋”ฉ์„ ๋ชจ๋‘ ํ•ด์•ผํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‚˜์˜จ ๋ฐฉ๋ฒ•๋ก ์„ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋ฐ”๋กœ MyBatis (DataBase Mapping Framework)
MyBatis -> Java์ฝ”๋“œ์™€ SQL ์„ ๋งตํ•‘(์—ฐ๊ฒฐ) ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

์šฐ๋ฆฌ๋Š” Java ์†Œ์Šค์ฝ”๋“œ์™€ sql ๋ฌธ์žฅ์„ ๋ถ„๋ฆฌํ•  ๊ฒƒ์ด๋‹ค sql๋ฌธ์žฅ์€ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ณด๊ด€ํ•  ๊ฒƒ์ด๋‹ค.
(SQL Mapper file) -> xml ํŒŒ์ผ

๐Ÿ“– sql mapper file ๋งŒ๋“ค๊ธฐ

new -> other -> XMLํด๋”์—์„œ XML File ์ฐพ๊ธฐ

์ด๋ฆ„์€ BoardMapper.xml๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

์ด์ œ ์—ฌ๊ธฐ์—๋‹ค๊ฐ€ select, insert ๋“ฑ sql๋ฌธ์žฅ์„ ์“ฐ๊ฒŒ๋˜๊ณ  DAO์—์„œ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
sql๋ฌธ์žฅ์€ ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ฃผ๊ณ  id๋ฅผ ์ฃผ์–ด์„œ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ MyBatis Framework ๋ผ๊ณ  ํ•œ๋‹ค.

xml ํŒŒ์ผ ์•ˆ์—์„œ๋Š” ์ง€์ •๋œ ํƒœ๊ทธ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค -> ์ด๊ฒƒ์„ ์Šคํ‚ค๋งˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
์šฐ๋ฆฌ๋Š” MyBatis์—์„œ ์ง€์ •๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

๐Ÿ“– MyBatis ์Šคํ‚ค๋งˆ ๊ฐ€์ ธ์˜ค๊ธฐ

https://blog.mybatis.org/ <- ์ ‘์†


MyBatis์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ JDBC๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ์ด์ œ๋ถ€ํ„ฐ JDBC๋ฅผ ์“ธ ํ•„์š”์—†์ด
MyBatis๋ฅผ ํ†ตํ•ด DB๋ฅผ ์ ‘๊ทผํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋‹ค.

์™ผ์ชฝ Getting started ๋ˆŒ๋Ÿฌ์„œ ๋””ํŽœ๋˜์‹œ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค. (๋ฉ”์ด๋ธ์—์„œ ์ฐพ์•„๋„ ์ƒ๊ด€์€ ์—†๋‹ค.)

ํ•˜๋‹จ์— ์˜ˆ์‹œ ์‚ฌ์šฉ๋ฒ•์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค. ๋ณต์‚ฌ๋ฅผ ํ•ด์„œ ์‚ฌ์šฉํ•˜์ž.

์ดํด๋ฆฝ์Šค์— ๋ณต์‚ฌํ•ด์„œ ๋„ฃ์–ด์ค€ ๋ชจ์Šต

DAO์—์„œ๋Š” Mapper.xml ์•ˆ์— ์žˆ๋Š” ํ…Œ๊ทธ์•ˆ์— id๋กœ ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๊ณ 
#{ } ์ด๋ถ€๋ถ„์€ JDBC ?์ด๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋™์ผํ•˜๋‹ค.

Mapper ํŒŒ์ผ์€ ํ•„์š”์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ์ด ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•˜๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ mapper๋“ค์€ namespace๋ฅผ ํ†ตํ•ด ๊ตฌ๋ณ„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์•ˆ์— ๋™์ผํ•œ id๋กœ sql๋ฌธ์žฅ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ์ž์‹ ์˜ Mapper์™€ ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.

๐Ÿ“Œ ๋งˆ๋ฌด๋ฆฌ

๐Ÿ“– ํ•œ๋งˆ๋””

๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” DAO๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ๋” ์ถ”๊ฐ€ํ•˜๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•ด ๋ณผ๊ฒƒ์ด๋‹ค.

ํ•˜๋‚˜ํ•˜๋‚˜ ๊ณต๋ถ€ํ•ด ๊ฐ€๋Š”๊ฒƒ์ด ์‰ฌ์šด์ผ์€ ์•„๋‹ˆ์ง€๋งŒ ์„ฑ์žฅํ•ด ๊ฐ€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋Š๊ปด์งˆ๋•Œ๋„ ์žˆ์–ด์„œ ์ข‹๋‹ค.

profile
Jay, a developer growing as a challenge, aims to surprise the world!

0๊ฐœ์˜ ๋Œ“๊ธ€