Home > Spring > ๐Ÿƒ[Spring] Spring Data JPA๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“ˆ์ธ๊ฐ€์š”?

๐Ÿƒ[Spring] Spring Data JPA๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“ˆ์ธ๊ฐ€์š”?
Spring Framework

๐Ÿƒ[Spring] Spring Data JPA๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๊ฐ€ ์•„๋‹Œ ๋ชจ๋“ˆ(Module)์ธ๊ฐ€์š”?

  • Spring Data JPA๋Š” Spring Data ํ”„๋กœ์ ํŠธ์˜ ํ•˜์œ„ ๋ชจ๋“ˆ(Module)๋กœ, ์ด๋ฅผ ๋ชจ๋“ˆ(Module)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๋ผ๋Š” ์šฉ์–ด์™€๋„ ์ข…์ข… ํ˜ผ์šฉ๋˜์–ด ์‚ฌ์šฉ๋˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ์šฉ์–ด ๊ฐ„์— ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ, ๊ฐœ๋ฐœ์ž๋“ค์ด Spring Data JPA๋ฅผ ์ด์•ผ๊ธฐํ•  ๋•Œ๋Š” ์ฃผ๋กœ ๋ชจ๋“ˆ(Module)๋กœ์„œ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ๋ชจ๋“ˆ(Module)๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์˜ ์ฐจ์ด.

1๏ธโƒฃ ๋ชจ๋“ˆ(Module)

  • ๋ชจ๋“ˆ(Module)์€ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ๋ชฉ์ ์„ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋” ํฐ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • Spring Data JPA๋Š” Spring Data๋ผ๋Š” ๋” ํฐ ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€๋ถ„์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์—์„œ JPA(Java Persistence API)์™€ Hibernate๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ์ ์—์„œ Spring Data JPA๋Š” ๋ชจ๋“ˆ(Module)๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ๋ชจ๋“ˆ๊ณผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ ˆ๊ณ  ๋ธ”๋ก์— ๋น„์œ ํ•ด๋ณด๋ฉด?!
๐Ÿ™‹โ€โ™‚๏ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ์˜ ์ปดํฌ๋„ŒํŠธ.
๐Ÿ™‹โ€โ™‚๏ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ์˜ ๋ชจ๋“ˆ.

2๏ธโƒฃ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ง‘ํ•ฉ์œผ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
  • Spring Data JPA๋„ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ, ๋” ํฐ ๋งฅ๋ฝ์—์„œ ๋ชจ๋“ˆ(Module)์€ ๋” ํฐ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐ˜๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ง‘ํ•ฉ์ด๋ผ๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™‹โ€โ™‚๏ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์™€ ํ”„๋ ˆ์ž„์›Œํฌ(Framework)์˜ ์ฐจ์ด์ .

2๏ธโƒฃ Spring Data ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ.

  • Spring Data๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ์ ํŠธ๋กœ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ(Module)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ(Module)์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋“ˆ(Module)์€ ํŠน์ • ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด
        • Spring Data JPA : JPA๋ฅผ ์‚ฌ์šฉํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ์œ„ํ•œ ๋ชจ๋“ˆ
        • Spring Data MongoDB : MongoDB๋ฅผ ์‚ฌ์šฉํ•œ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ์œ„ํ•œ ๋ชจ๋“ˆ
        • Spring Data Redis : Redis ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ์ ‘๊ทผ์„ ์œ„ํ•œ ๋ชจ๋“ˆ
        • Spring Data Elasticsearch : Elasticsearch ์ ‘๊ทผ์„ ์œ„ํ•œ ๋ชจ๋“ˆ
  • ์ด์ฒ˜๋Ÿผ Spring Data JPA๋Š” Spring Data ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๋กœ, JPA(Java Persistence API)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Relational Database)์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ Spring Data JPA๋ฅผ ๋ชจ๋“ˆ(Module)๋กœ ๋ณด๋Š” ์ด์œ .

  • Spring ์ƒํƒœ๊ณ„์˜ ์ผ๋ถ€๋ถ„
    • Spring Data JPA๋Š” Spring Data ํ”„๋กœ์ ํŠธ์˜ ํ•˜์œ„ ๋ชจ๋“ˆ๋กœ, Spring์˜ ์ผ๊ด€๋œ ๊ตฌ์กฐ์™€ ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋ฉฐ, ๋‹ค๋ฅธ Spring ๋ชจ๋“ˆ๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.
  • ํŠน์ • ๊ธฐ๋Šฅ์— ์ง‘์ค‘
    • Spring Data JPA๋Š” JPA๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์—ญํ• ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜์กด์„ฑ ๊ด€๋ฆฌ
    • Maven ๋˜๋Š” Gradle์˜ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ, Spring Data JPA ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ JPA ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ ์š”์•ฝ.

  • Spring Data JPA๋Š” Spring Data ํ”„๋กœ์ ํŠธ์˜ ํ•˜์œ„ ๋ชจ๋“ˆ๋กœ์„œ, JPA ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ชจ๋“ˆ์€ ๋” ํฐ Spring Data ์ƒํƒœ๊ณ„์˜ ์ผ๋ถ€๋กœ ๋™์ž‘ํ•˜๋ฉฐ, JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ชจ๋“ˆ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ํ˜ผ์šฉํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, Spring Data JPA๋Š” ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ๋ชจ๋“ˆ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.