budtree
budtree
budtree
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (77)
    • ๐Ÿ’ Computer Science (5)
      • OS (1)
      • Network (1)
      • Database (3)
    • ๐Ÿค study (21)
      • kubernetes๐Ÿ•ธ๏ธ (0)
      • Spring Boot๐Ÿƒ (1)
      • JPA (2)
      • Infra (2)
      • HTML | CSS (3)
      • Java (6)
      • Kotlin (3)
      • etc (4)
    • ๐Ÿ’ป Project (3)
      • memoir & diary ๐Ÿ“š (1)
      • class (0)
      • project (2)
    • ๐Ÿ”ฅ Problem Solving (38)
      • programmers (30)
      • SQL (8)
      • BOJ (0)
    • โœจ daily (10)
      • diary (5)
      • exercise (5)
      • travel (0)
      • review (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • kotlin
  • ํ”„๋ฆฐ์ด
  • programmers
  • ๊ฐœ๋ฆฐ์ด
  • 2018 KAKAO BLIND RECRUITMENT
  • ์ทจ์—…
  • ๋ธ”๋ž™๋ฉ€ํ‹ฐ์ง
  • java
  • pt
  • ์„œ์šธ๋Œ€์ž…๊ตฌ ํ—ฌ์Šค์žฅ
  • ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ์ž๋ฐ”
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์ฝ”๋ฆฐ์ด
  • ์ทจ์—…์ค€๋น„
  • ์ผ๊ธฐ
  • ์ฝ”ํ‹€๋ฆฐ
  • HashMap
  • ํ”ผํ‹ฐ
  • ์นด์นด์˜ค์ฝ”ํ…Œ
  • ์นด์นด์˜ค
  • ์นด์นด์˜ค์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ํ—ฌ๋ฆฐ์ด
  • ArrayList
  • ์ฝ”ํ…Œ
  • ์›”๊ฐ„์ฝ”๋“œ์ฑŒ๋ฆฐ์ง€
  • Summer/Winter Coding
  • ํ—ฌ์Šค์žฅ
  • css

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
budtree

budtree

๐Ÿค study/JPA

[JPA] JPA ๊ฐœ์š”, JPA ์ •์˜, JPA ์žฅ์  (์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ 1,2์žฅ ์š”์•ฝ)

2022. 11. 15. 22:40

JPA ๊ฐœ์š”

ORM ํ”„๋ ˆ์ž„์›Œํฌ : ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งคํ•‘ํ•ด์ค€๋‹ค.

JPA ์ •์˜

  • EJB์—์„œ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ์ž๋ฐ” ORM ๊ธฐ์ˆ  ํ‘œ์ค€
  • ์ž๋ฐ” ์ง„์˜์˜ ORM ๊ธฐ์ˆ  ํ‘œ์ค€์ด๋‹ค.(object relational mapping)
  • ์ง€๋ฃจํ•˜๊ณ  ๋ฐ˜๋ณต์ ์ธ crud sql์„ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ , ์‹คํ–‰ ์‹œ์ ์— ์ž๋™์œผ๋กœ SQL์„ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰ํ•œ๋‹ค.
  • ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•˜๋Š” ์ž‘์—…์„ ๋Œ€๋ถ€๋ถ„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

 

JPA ์žฅ์ 

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ SQL์ด ์•„๋‹Œ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋‹ˆ ์ƒ์‚ฐ์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์ข‹๋‹ค.
    • 1๏ธโƒฃ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด
      • JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•  ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
      • SQL์„ ์ง์ ‘ ๋‹ค๋ฃจ๋ฉด ์—”ํ‹ฐํ‹ฐ์— ํ•„๋“œ๋ฅผ ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ํ•ด๋„ ๊ด€๋ จ๋œ ๋“ฑ๋ก, ์ˆ˜์ •, ์กฐํšŒ SQL๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ jdbc api ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.
    • 2๏ธโƒฃ ์ƒ์‚ฐ์„ฑ ์ธก๋ฉด
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ค‘์‹ฌ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๊ฐ์ฒด ์„ค๊ณ„์ค‘์‹ฌ์œผ๋กœ ์—ญ์ „ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • jpa์—๊ฒŒ ์ €์žฅํ•  ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— sql, jdbc api๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค.(์ถ”์ƒํ™”ํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์„ ์ œ๊ณต)
    • → ์ฝ”๋“œ ์ˆ˜์ •์ด ๊ฑฐ์˜ ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜ ํ•ด๊ฒฐ
    • ์ƒ์†, ์—ฐ๊ด€๊ด€๊ณ„, ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.
    • ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ๋งˆ์Œ๊ป ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.→ ์–ธ์ œ ๋Š์–ด์งˆ ์ง€ ๋ชจ๋ฅด๋Š” ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ถˆ์•ˆ๊ฐ ์กด์žฌ
      • → ์•Œ์•„๋ณด๋ ค๋ฉด DAO(๋ฐ์ดํ„ฐ ์ ‘๊ทผ๊ณ„์ธต)๋ฅผ ์—ด์–ด์„œ sql์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์—”ํ‹ฐํ‹ฐ์™€ ๊ฐ•ํ•œ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.
      • → (๋น„๊ต) SQL์„ ์ง์ ‘ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋ฉด ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋Š” sql์— ๋”ฐ๋ผ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์–ด๋””๊นŒ์ง€ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ •ํ•ด์ง„๋‹ค.



JPA ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

1. ๊ฐ์ฒด ๋งคํ•‘ ๋ฐฉ๋ฒ•

//Member.java

@Entity
@Table(name="MEMBER")
public class Member {
    @Id
    @Column(name = "ID")
    private String id;

    @Column(name = "NAME")
    private String username;

    // ๋งคํ•‘ ์ •๋ณด๊ฐ€ ์—†์Œ
    private Integer age;
}

@Table, @Entity, @Column์€ ํšŒ์› ํด๋ž˜์Šค์— ๋งคํ•‘ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.

@Entity

  • ์ด ํด๋ž˜์Šค๋ฅผ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•œ๋‹ค๊ณ  JPA์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.
  • JPA์˜ ์—”ํ‹ฐํ‹ฐ : ํ…Œ์ด๋ธ”์„ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•œ ์ž๋ฐ” ํด๋ž˜์Šค

@Table

  • ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์— ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  • ์—ฌ๊ธฐ์„  Member ์—”ํ‹ฐํ‹ฐ๋ฅผ MEMBER ํ…Œ์ด๋ธ”์— ๋งคํ•‘ํ•œ๋‹ค.

@Id

  • ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ฅผ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์— ๋งคํ•‘ํ•œ๋‹ค.
  • ์‹๋ณ„์ž ํ•„๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

@Column

  • ํ•„๋“œ๋ฅผ ์ปฌ๋Ÿผ์— ๋งคํ•‘ํ•œ๋‹ค.
  • Member ์—”ํ‹ฐํ‹ฐ์˜ username ํ•„๋“œ๋ฅผ ํ…Œ์ด๋ธ”์˜ NAME ์ปฌ๋Ÿผ์— ๋งคํ•‘ํ•œ๋‹ค.

NONE

  • ๋งคํ•‘ ์ •๋ณด๊ฐ€ ์—†์„๋•Œ, ํ•„๋“œ๋ช…์„ ์ด์šฉํ•ด ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค.



2. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

public class JpaMain {
    public static void main(String[] args) {
        //์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ์ƒ์„ฑ
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
        //์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ € ์ƒ์„ฑ
        EntityManager em = emf.createEntityManager();
        //ํŠธ๋žœ์žญ์…˜ ํš๋“
        EntityTransaction tx = em.getTransaction();

        try {
            tx.begin(); //ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
      logic(em);  //๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
      tx.commit();//ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹

      } catch (Exception e) {
          e.printStackTrace();
          tx.rollback(); //ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ
      } finally {
          em.close(); //์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ข…๋ฃŒ
      }

      emf.close(); //์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ์ข…๋ฃŒ
    }
}

 

  1. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ์ƒ์„ฑ
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
  • JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•œ๋‹ค.
  • ์ƒ์„ฑ๋น„์šฉ์ด ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

  1. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ƒ์„ฑ
EntityManager em = emf.createEntityManager();
  • JPA์˜ ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„์€ ์ด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €์—์„œ ์ œ๊ณตํ•œ๋‹ค.
  • ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ/์กฐํšŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ๊ฐ„ ๊ณต์œ ๋‚˜ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

  1. ์ข…๋ฃŒ
em.close();

์‚ฌ์šฉ์ด ๋๋‚œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋งŒ๋“œ์‹œ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.

 

emf.close(); //์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ ์ข…๋ฃŒ

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ข…๋ฃŒํ•œ๋‹ค.

 

  1. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ
try {
    tx.begin(); //ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
    logic(em);  //๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
    tx.commit();//ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹

} catch (Exception e) {
    e.printStackTrace();
    tx.rollback(); //ํŠธ๋žœ์žญ์…˜ ๋กค๋ฐฑ
} finally {
    em.close(); //์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ์ข…๋ฃŒ    
}
  • JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €์—์„œ ํŠธ๋žœ์žญ์…˜ API๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ ์ดํ›„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ•˜๊ณ , ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋กค๋ฐฑํ•œ๋‹ค.

 

  1. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
public static void logic(EntityManager em) {

    String id = "id1";
    Member member = new Member();
    member.setId(id);
    member.setUsername("์ง€ํ•œ");
    member.setAge(2);

    //๋“ฑ๋ก
    em.persist(member);

    //์ˆ˜์ •
    member.setAge(20);

    //ํ•œ ๊ฑด ์กฐํšŒ
    Member findMember = em.find(Member.class, id);
    System.out.println("findMember=" + findMember.getUsername() + ", age=" + findMember.getAge());

    //๋ชฉ๋ก ์กฐํšŒ
    List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
    System.out.println("members.size=" + members.size());

    //์‚ญ์ œ
    em.remove(member);

}
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง : ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ต์‹ฌ ๋กœ์ง, ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ €์žฅ๋˜๊ณ  ์ˆ˜์ •๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•œ ๊ฒƒ
  • ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ ์ž‘์—…์ด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰๋œ๋‹ค.
    • ex)em.remove, em.persist, em.createQuery().getResult() …
    • ์ˆ˜์ •
//์ˆ˜์ •
member.setAge(20);

์ˆ˜์ •๋ถ€๋ถ„์€ ๋…ํŠนํ•˜๋‹ค. JPA๋Š” ์–ด๋–ค ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์ถ”์ •๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—”ํ‹ฐํ‹ฐ์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด UPDATE SQL์„ ์ƒ์„ฑํ•ด์„œ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.

  • ๋ชฉ๋ก ์กฐํšŒ
//๋ชฉ๋ก ์กฐํšŒ
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();

JPA์—์„œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ฒฐ๊ตญ SQL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. JPA๋Š” JPQL์ด๋ผ๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.(JPQL์€ SQL๋ฅผ ์ถ”์ƒํ™”ํ•œ ์–ธ์–ด๋‹ค.)

  • JPQL, SQL ์ฐจ์ด์ SQL : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค.
  • JPQL : SQL์„ ์ถ”์ƒํ™”ํ•œ ์–ธ์–ด๋‹ค. ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํƒœ์ด๋ธ”์„ ๋ชจ๋ฅธ๋‹ค.

JPA๋Š” JPQL์„ ๋ถ„์„ํ•ด์„œ ์ ์ ˆํ•œ SQL์„ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค.



์ค‘๊ฐ„ ํšŒ๊ณ 

2์žฅ๊นŒ์ง€ ๋ณด๋ฉด์„œ ๋А๋‚€์ ์„ ์ ์–ด๋ณด๊ฒ ๋‹ค!

ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜๋„ ์–ด๋А์ •๋„ ์žˆ๊ณ , ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ์ต์ˆ™ํ•ด์ ธ์„œ JPA์— ๋Œ€ํ•ด ๋งŽ์ด ์•ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ์™„์ „ ํฐ ์˜ค์‚ฐ์ด์—ˆ๋‹ค.

๋งค๋ฒˆ ์‹ค๋ฌดํ˜•, ์‹ค์ „ํ˜•๋งŒ์„ ์šด์šดํ•˜๋ฉฐ ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜์ง€๋„ ์•Š์€ ์ฑ„ ์ž์‹ ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ฐˆ์ˆ˜๋ก ๊นŠ์€ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ๋‹ค๋Š” ์—ด๋ง์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ํ•ด๋‹น ์ฑ…์„ ๊ตฌ๋งคํ•˜๊ฒŒ ๋๋‹ค.

SpringData JPA๋ฅผ ๊ฒฝํ—˜ํ•ด ๋ณธ ์ ์€ ์žˆ์ง€๋งŒ JPA๋ฅผ ์ด์šฉํ•œ ์˜ˆ์ œ๋Š” ์ฒ˜์Œ ์ ‘ํ•ด๋ดค๋Š”๋ฐ ์‚ฌ์‹ค ์ด ๋‘˜์˜ ์ฐจ์ด๋„ ์ž˜ ๋ชฐ๋ž์—ˆ๋‹ค..-_- ์ถฉ๊ฒฉ์ ์œผ๋กœ ์–•์•˜๋˜ ๋‚˜์˜ ์ง€์‹์— ๋ฐ˜์„ฑํ•˜๋ฉฐ..

๊ทธ๋ž˜๋„ ‘๊นŠ๊ฒŒ ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค’๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ  ์Šค์Šค๋กœ ์ฐพ์•„๋ดค๋‹ค๋Š”๊ฒŒ ๋ฟŒ๋“ฏํ•˜๋‹ค. ์ด ์ฑ…์„ ๋งŒ๋‚˜์„œ ๊ธฐ์˜๋‹ค!! ์ด ์ฑ…์„ ๋‹ค ์ฝ์„๋•Œ์ฏค์ด๋ฉด ํ•œ์ธต ๋” ๊นŠ์€ ๋‚ด๊ฐ€ ๋˜๊ธธ ๋ฐ”๋ž€๋‹คใ…Ž.ใ…Ž


์ฐธ๊ณ 

  • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ์ „์ž์ •๋ถ€ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋ ˆ์ž„

 

์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ณ ์ž ์ตœ์„ ์„ ๋‹คํ•˜์ง€๋งŒ, ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! 
ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์„ ์‹œ ์ง€์ ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํžˆ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜€

'๐Ÿค study > JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JPA] Hibernate, JPA, Spring Data JPA, JDBC ์ฐจ์ด  (0) 2022.11.15
    '๐Ÿค study/JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JPA] Hibernate, JPA, Spring Data JPA, JDBC ์ฐจ์ด
    budtree
    budtree
    ๊ฐœ๋ฐœ, ์šด๋™, ์ผ์ƒ๋“ฑ์˜ ๊ธ€์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

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