๐Ÿง‘โ€๐Ÿ’ป ์Šคํ”„๋ง๋ถ€ํŠธ DB์™€ ์—ฐ๋™ํ•˜๊ธฐ ๐Ÿ“–

J_m2nยท2023๋…„ 10์›” 5์ผ
0
post-custom-banner

์Šคํ”„๋ง๋ถ€ํŠธ DB์™€ ์—ฐ๋™ํ•˜๊ธฐ




์šฐ์„ , DAO, DTO, VO์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

  • DAO : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ๋“ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
  • DTO : ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” getter์™€ setter๋งŒ์„ ๊ฐ€์ง€๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด
  • VO : Read-Only ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด, getter๋งŒ ๊ฐ€์ง


SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ dependancy์— JPA ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•œ๋‹ค.
JPA : ์ž๋ฐ” ์–ธ์–ด๋กœ DB์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๋„๊ตฌ์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ


๊ทธ๋Ÿฌ๋ฉด JPA์˜ ํ•ต์‹ฌ ๋„๊ตฌ์ธ Entity์™€ Repository๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

  • Entity : ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•œ ๊ฒƒ
  • Repository : ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์† ํ…Œ์ด๋ธ”์— ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค

  1. DTO๋ฅผ Entity๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
  2. Repository๋กœ Entity๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ธฐ


DTO๋ฅผ Entity๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฒ•

public [๋ฉ”์†Œ๋“œ๋ช…] toEntity(){
	return new [์ƒ์„ฑ์ž](ํŒŒ๋ผ๋ฏธํ„ฐ1,2,3...);
}

[Entity ๊ฐ์ฒด] = [DTO๊ฐ์ฒด].toEntity();๋ฅผ ํ†ตํ•ด Entity ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ.


Repository๋กœ Entity๋ฅผ DB์— ์ €์žฅํ•˜๊ธฐ

  1. Repository ์ƒ์„ฑ
    • Interface๋กœ repository ํŒŒ์ผ ์ƒ์„ฑ
    • extends CrudRepository ์ƒ์†๋ฐ›๊ธฐ

      (CrudRepository : JPA์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ)

    • ์ €์žฅ์„ ์œ„ํ•ด CrudRepository์—์„œ ์ œ๊ณตํ•˜๋Š” save() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
    • [์ƒˆ๋กœ์šด Entity ๊ฐ์ฒด] = [Repository๊ฐ์ฒด].save([๊ธฐ์กด Entity ๊ฐ์ฒด]);๋กœ ์ €์žฅ

      Repository ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š” ์—†์ด @Autowired ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋†“์€ ๊ฐ์ฒด๋ฅผ ์•Œ์•„์„œ ์—ฐ๊ฒฐํ•ด์คŒ





H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ Mysql๊ณผ ๋‹ฌ๋ฆฌ ๋ชจ๋“  ์ž…์ถœ๋ ฅ์„ ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋“œ์—์„œ ๋Œ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด DB์— ์ €์žฅ๋œ ๋‚ด์šฉ์ด ๋ชจ๋‘ ์‚ฌ๋ผ์ง€๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  jdbc url ๊ฐ’๋„ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ๋ณ€๊ฒฝ๋œ๋‹ค.

๊ทธ๋ž˜์„œ H2 DB๋ฅผ ์กฐํšŒํ•  ๋•Œ๋Š” ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ๋˜๋Š” ํ•ด๋‹น url์„ ๊ณ„์† ์ ์šฉ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.



JDBC URL ์ฐพ๋Š” ๋ฒ•

์„œ๋ฒ„๋ฅผ ๊ฐ€๋™์‹œํ‚จ ํ›„ ์ธํ…”๋ฆฌ์ œ์ด์˜ Run ํƒญ์—์„œ โŒ˜ + F ๋กœ 'jdbc:h2:'๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด 'jdbc:h2:mem:'์˜ ๋’ท๋ถ€๋ถ„์ด ํ•ด๋‹น ์„œ๋ฒ„์˜ jdbc url ๊ฐ’์ด๋‹ค.



H2 DB์— ์ ‘์†ํ•˜๊ธฐ

  1. ํ”„๋กœ์ ํŠธ์˜ src > main > resources > application.properties ํŒŒ์ผ์— spring.h2.console.enabled=true ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

  2. ํฌ๋กฌ์˜ ์ฃผ์†Œ์ฐฝ์— localhost:8080/h2-console ๋กœ ์ด๋™ํ•œ๋‹ค.

  3. JDBC URL ์ž…๋ ฅ์ฐฝ์— ์œ„์—์„œ ์ฐพ์€ JDBC URL ๊ฐ’์„ 'jdbc:h2:mem:'๊นŒ์ง€ ๋ถ™์—ฌ์„œ ์ถ”๊ฐ€ํ•œ ํ›„ Connect๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋!

profile
์ฝ”๋”ฉ ์ดˆ์งœ์ž…๋‹ˆ๋‹ค
post-custom-banner

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