[Spring Data JPA] JPA

2023. 10. 14. 10:04ยทWeb & Android/Spring Data JPA

๐Ÿ’ก ๋งคํ•‘์˜ ๋œป : ํ‚ค(key) ์—ญํ• ์„ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ฐ’(value) ์—ญํ• ์„ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง ์ง€์–ด(=์—ฐ๊ฒฐ ์ง€์–ด) ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

 

JPA(Java Persistence API)

  • ์ž๋ฐ” ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ API ํ‘œ์ค€
  • Persistence : ์˜์†์„ฑ
  • persist() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅ
  • Hibernate, OpenJPA

⇒ API(Application Programming Interface)

Spring Data JPA

  • save() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ €์žฅ์ด๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•จ

JPA ์žฅ์ 

  1. ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ข…์†๋˜์ง€ ์•Š์Œ
    • ์กฐ๊ธˆ ์ข…์† ๋จ, ๊ฑฐ์˜ ๊ตฌ๋ถ„์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ์˜ค๋ผํด, MySQL, MSSQL ๋“ฑ๋“ฑ์„ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋ฉด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  2. ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์„ค๊ณ„ ๊ฐ€๋Šฅ
    • ์ง๊ด€์ ์ด๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘
  3. ์œ ์ง€๋ณด์ˆ˜ ์œ ๋ฆฌ ๋ฐ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ
    • ์ปฌ๋Ÿผ ์ˆ˜์ • ์‹œ ํด๋ž˜์Šค ํ•„๋“œ ์ˆ˜์ •์œผ๋กœ ํ•ด๊ฒฐ

JPA ๋‹จ์ 

  1. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ
    • Native SQL
    • JPQL ์ง€์› (์ฟผ๋ฆฌ๋ž‘ ๋น„์Šท)
  2. ์„ฑ๋Šฅ ์ €ํ•˜ ์œ„ํ—˜
    • ์ž๋™ ์ƒ์„ฑ์— ์˜ํ•œ ์˜๋„ํ•˜์ง€ ์•Š๋Š” ์ฟผ๋ฆฌ ๋ฐœ์ƒ
  3. ํ•™์Šต ์‹œ๊ฐ„
    • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค → MyBatis → JPA ๊ถŒ์žฅ

 

JPA ๋™์ž‘ ๋ฐฉ์‹

์—”ํ‹ฐํ‹ฐ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ๋Œ€์‘ํ•˜๋Š” ํด๋ž˜์Šค
  • @Entity ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์„œ ๊ด€๋ฆฌ

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ

  • ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ํ•œ ๊ฐœ๋งŒ ๋งŒ๋“ค์–ด์ง€๋ฉฐ
  • ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ƒ์„ฑ

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €

  • ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•˜์—ฌ ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ์ œ๊ณต

 

Database ์„ค์ •

  • spring.datasource.driver-class-name=๊ฒฝ๋กœ(com.mysql.cj.jdbc.Driver)
  • spring.datasource.url=๋ฐ๋ฒ  ๊ฒฝ๋กœ(jdbc:mysql://localhost:3306/shop2?serverTimezone-UTC)
  • spring.datasource.username=์œ ์ € ์ด๋ฆ„(root)
  • spring.datasource.password=๋น„๋ฐ€๋ฒˆํ˜ธ(1234)

JPA ์„ค์ •

  • spring.jpa.properties.hibernate.show_sql=true : ์ƒ์„ฑํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฝ˜์†”์— ๋ณด์—ฌ์ค„์ง€์˜ ์—ฌ๋ถ€
  • spring.jpa.properties.hibernate.format_sql=true : ์ฟผ๋ฆฌ ๋ชจ์–‘์„ ๋งž์ถฐ์„œ ๋ณด์—ฌ์ค„์ง€์˜ ์—ฌ๋ถ€(ex)๋“ค์—ฌ์“ฐ๊ธฐ)
  • spring.jpa.hibernate.ddl-auto=create or update: update : ๋ณ€๊ฒฝ๋œ ์Šคํ‚ค๋งˆ ์ ์šฉ
  • : validate : ์—”ํ‹ฐํ‹ฐ์™€ ํ…Œ์ด๋ธ” ์ •์ƒ ๋งคํ•‘ ํ™•์ธ
  • : create : ๊ธฐ์กด ํ…Œ์ด๋ธ” ์‚ญ์ œ ํ›„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  • spring.jpa.database-platform=๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด ์„ค์ •(org.hibernate.dialect.์–ธ์–ด์ด๋ฆ„)

๐Ÿ’ก ํ˜ผ์ž ๊ณต๋ถ€ํ•  ๋•Œ ์ฐพ์•„ ๋†“์€ ๋ณด์ถฉ ์„ค๋ช…

  • DDL ( ๋ฐ์ดํ„ฐ ์ •์˜์–ด )
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ๊ณจ๊ฒฉ์„ ๊ฒฐ์ •
    • ๋ฐ๋ฒ , ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ๋ณ€๊ฒฝ, ์ œ๊ฑฐ
    • CREATE, ALTER, DROP, TRUNCATE
  • DML ( ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด )
    • ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ–‰๊ณผ ์—ด์„ ์กฐ์ž‘ํ•˜๋Š” ์–ธ์–ด
    • ๋ฐ์ดํ„ฐ ์ž…๋ ฅ, ๋ณ€๊ฒฝ, ์ˆ˜์ • ๋“ฑ
    • SELECT, INSERT, UPDATE, DELETE
  • DCL ( ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด )
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด์— ๊ถŒํ•œ์„ ์ฃผ๋Š” ๋“ฑ์˜ ์—ญํ• 
    • ๋ฐ๋ฒ  ์ ‘์†๊ถŒํ•œ
    • GRANT, REVOKE, COMMIT, ROLLBACK
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Web & Android > Spring Data JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring Data JPA] Querydsl  (1) 2023.10.15
[Spring Data JPA] @Query  (0) 2023.10.14
[Spring Data JPA] QueryMethod  (0) 2023.10.14
[Spring Data JPA] ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ  (1) 2023.10.14
[Spring Data JPA] ORM & SQL Mapper  (0) 2023.10.14
'Web & Android/Spring Data JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring Data JPA] Querydsl
  • [Spring Data JPA] @Query
  • [Spring Data JPA] QueryMethod
  • [Spring Data JPA] ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ
woojin._.
woojin._.
์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด๋ฉฐ ๋ฐœ์ƒํ•˜๋Š” ์ด์•ผ๊ธฐ๋“ค์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • ์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • ๋ฆฌ๋ˆ…์Šค (7)
        • AWS (7)
      • Coding Test (445)
        • ๋ฐฑ์ค€[JAVA] (108)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JAVA] (260)
        • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  Kit[JAVA] (3)
        • SQL ๊ณ ๋“์  Kit[ORACLE] (74)
      • CS ์ง€์‹ (49)
        • [์ž๋ฃŒ๊ตฌ์กฐ] (14)
        • [๋„คํŠธ์›Œํฌ] (12)
        • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] (10)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜] (9)
        • [์šด์˜์ฒด์ œ] (4)
      • ๊ธฐํƒ€ (6)
      • ์ž๊ฒฉ์ฆ & ๊ณต๋ถ€ (62)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (2)
        • SQLD (6)
        • ๋„คํŠธ์›Œํฌ๊ด€๋ฆฌ์‚ฌ 2๊ธ‰ (5)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (44)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰ (1)
        • ISTQB (3)
        • ์‹œ์Šคํ…œ๋ณด์•ˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA
    CS์ง€์‹
    ๋ฆฌ๋ˆ…์Šค
    ์Šคํ”„๋ง
    ๋ฐ์ดํ„ฐ
    CS
    ์Šคํ”„๋ง๋ถ€ํŠธ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    spring
    springboot
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰
    JPA
    pcce ๊ธฐ์ถœ๋ฌธ์ œ
    DB
    ์ž๋ฐ”
    ํ”Œ๋Ÿฌํ„ฐ
    Java
    Oracle
    Linux
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ์‹œํ๋ฆฌํ‹ฐ
    postgresql
    baekjoon
    Spring Security
    ๋ฐฑ์ค€
    programmers
    backjoon
    python
    Flutter
  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
woojin._.
[Spring Data JPA] JPA
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”