1.
JPA μκ°
a.
SQL μ€μ¬μ μΈ κ°λ°μ λ¬Έμ μ
β’
DB μΈκ³μ ν€κ²λͺ¨λ
β¦
κ΄κ³ν DB
β’
κ°μ²΄λ₯Ό κ΄κ³ν DB μ μ μ₯
β’
무ν λ°λ³΅, μ§λ£¨ν μ½λ(CRUD, κ°μ²΄ β SQL, SQLβ κ°μ²΄, νλ μΆκ° λ±)
β’
SQLμ μμ‘΄μ μΈ κ°λ°μ νΌνκΈ° μ΄λ ΅λ€
β’
ν¨λ¬λ€μμ λΆμΌμΉ
β¦
κ°μ²΄ vs κ΄κ³ν DB
βͺ
μμ
β’
μ‘°ν, μ½μ
λ± λ³΅μ‘νλ€.
βͺ
μ°κ΄κ΄κ³
β’
μ°Έμ‘° vs μΈλ ν€
β’
κ°μ²΄λ λ¨λ°©ν₯, μΈλν€λ μλ°©ν₯
βͺ
λ°μ΄ν° νμ
βͺ
λ°μ΄ν° μλ³ λ°©λ²
β¦
κ°μ²΄ μ μ₯μ
βͺ
RDB, NoSQL, File λ±
β¦
κ°μ²΄ SQL 맀νμ κ°λ°μκ° ν¨
2.
JPA μκ°
a.
JPAλ νμ€ λͺ
μΈ
b.
JPAλ₯Ό μ μ¬μ©ν΄μΌ νλκ°?
i.
μμ°μ±
1.
persist, find, setName, remove λ±
ii.
μ μ§λ³΄μ
iii.
ν¨λ¬λ€μμ λΆμΌμΉ ν΄κ²°
1.
μμ
a.
μμμ insert λκ°λ λ¦Ό
2.
μ°κ΄κ΄κ³
a.
μμμ join ν΄μ λ λ¦Ό
3.
κ°μ νΈλμμ
μμ μ‘°νν μν°ν°λ κ°λ€κ³ 보μ₯
4.
μ±λ₯ ν₯μ
a.
1μ°¨ μΊμμ λμΌμ± 보μ₯
b.
μ°κΈ° μ§μ°
c.
μ§μ° λ‘λ©κ³Ό μ¦μ λ‘λ©
μμμ± μ»¨ν
μ€νΈ(pc)
β’
μν°ν°λ₯Ό μꡬ μ μ₯νλ νκ²½
β¦
dbμ μ μ₯νλ κ²μ΄ μλλΌ μμμ± μ»¨ν
μ€νΈ λΌλ κ³³μ μ μ₯
β’
em.persist(entity);
β’
μμμ± μ»¨ν
μ€νΈλ λ
Όλ¦¬μ μΈ κ°λ
β’
μν°ν° 맀λμ λ₯Ό ν΅ν΄ μ컨μ μ κ·Ό
β’
em κ³Ό pcκ° 1:1(J2SE νκ²½)
β’
em κ³Ό pcκ° n:1(J2EE, spring framework κ°μ 컨ν
μ΄λ νκ²½)
μν°ν° μλͺ μ£ΌκΈ°
β’
λΉμμ(new, transient)
β¦
pc μ μ ν κ΄κ³κ° μλ μλ‘μ΄ μν
β’
μμ(managed)
β¦
pc μ κ΄λ¦¬λλ μν
β’
μ€μμ(detached)
β¦
pc μ μ μ₯λμλ€κ° λΆλ¦¬λ μν
β’
μμ
β’
em.persist νλ©΄ pc μ μ μ₯(db μ μ₯ x)
β’
em.commit ν λ μΏΌλ¦¬κ° λ λΌκ°
PC μ μ΄μ
β’
1μ°¨ μΊμ
β’
λμΌμ± 보μ₯
β’
νΈλμμ
μ μ§μνλ μ°κΈ° μ§μ°
β¦
pc λ΄λΆ μ°κΈ° μ§μ° SQL μ μ₯μμ insert sql μμ±
β¦
μ΄ν commit() μ΄ λ μμ€λ©΄ flush() λ‘ insert sql 보λ
β’
μν°ν° μμ λ³κ²½ κ°μ§(dirty checking)
β¦
μ€λ
μ·μΌλ‘ λ³κ²½ κ°μ§
flush
β’
PC λ₯Ό λΉμ°λ κ²μ΄ μλ
β’
PC μ λ³κ²½ λ΄μ©μ DB μ λκΈ°ννλ κ²μ΄ λͺ©μ
detach(entity) vs clear()
β’
νΉμ μν°ν°λ§ μ€μμ μνλ‘ μ ν
β’
pc λ₯Ό μμ ν μ΄κΈ°ν
entity 맀ν
β’
unique λ @column λ§κ³ @table μ΄μ©νκΈ°!