persistence.xml
EntityManagerFactory
EntityManager
โถJPA ๊ฐ๋
โทJPA ๊ฐ๋
- ORM : ๊ฐ์ฒด-๊ด๊ณ-๋งคํ์ ์ฝ์. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋ฐ์ดํฐ ๋ณํ์ ์๋ํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ (Object-Relational-Mapping)
- JPA : ORM๋ค์ ๋ณด๋ค ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ์คํ์ํจ ๊ฒ(Java Persistence API)
- ์คํ๋ง ๋ฐ์ดํฐ JPA : ์คํ๋ง๋ถํธ์์ ์ด๋ฐ JPA๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ ๋ชจ๋. SpringData์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, XML ์ค์ ์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋จ.
โ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๊ธฐ์
SQL์ ์ง์ ๋ค๋ฃจ๋ ๊ธฐ์
|
SQL์ ์ง์ ๋ค๋ฃจ์ง ์๋ ๊ธฐ์
|
SQL์ ๊ฐ๋ฐ์๊ฐ ์ง์ XMLํ์ผ์ ๋ฑ๋กํด์ ์ฌ์ฉํจ
|
ํ๋ ์์ํฌ์์ SQL์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ SQL์ ์ง์ ์์ฑํ๊ฑฐ๋ ์ ๊ฒฝ์ธ ํ์ ์์
|
RDB → OOP
|
ํด๋์ค → DB
|
ํ
์ด๋ธ๊ณผ ๋งคํํ ์๋ฐํด๋์ค(DTO)๊ฐ ํ์,
๋งคํํ๊ธฐ ์ํ SQL ๊ตฌ๋ฌธ๋ค์ด ํ์ํจ.
|
DTO๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ DB๊ฐ ์๋, java.util.Map๊ฐ์ ์ปฌ๋ ์
์ ์ ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฐ๋
.
์ปฌ๋ ์
์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ฉด์ ๋ฐ์ดํฐ๊ด๋ฆฌ ์์ฒด๊ฐ ์ฌ์์ง
|
์๊ตฌ์ฌํญ ์ถ๊ฐ ์ ํ
์ด๋ธ ์์ , ํด๋์ค ์์ , SQL๋ณ๊ฒฝ์ผ๋ก XMLํ์ผ ์์ .
|
์๊ตฌ์ฌํญ ์ถ๊ฐ ์ ํด๋์ค์ ๋ณ์๋ง ์ถ๊ฐํ๋ฉด ๋จ
|
- JDBC : Java ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ฐ์ ํ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค ๋ฐฉ๋ฒ์ ์ ๊ณต. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ, SQL ์ฟผ๋ฆฌ ์คํ ๋ฐ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํจ.(์ ์์ค์ SQL์์ ์ฒ๋ฆฌ)
- JPA๊ฐ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๋ฉด ์ค์ ๋ก JPA๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๊ฐ ๋์ํจ. ์คํ๋ง๋ถํธ์์๋ ๋ฐ๋ก ์ค์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด๋ฒ๋ค์ดํธ๋ฅผ JPA ๊ตฌํ์ฒด๋ก ์ด์ฉํจ.
- JPA : Java ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ JDBC์ ๋ณต์กํ ์ ์ฐจ๋ฅผ ๋์ ์ฒ๋ฆฌํด์ค (๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋์ ์ฌ์ฉ๋๋ ์ฝ๋ + SQL ์ ๊ณต) ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ์ ๋งคํ์ ์ค์ฌ์ผ๋กํ ๊ณ ์์ค์ ์ธํฐํ์ด์ค ์ ๊ณต
โโ
โทJPA ํต์คํํธ
- Hibernate : Hibernate๋ Java์์ ์ฌ์ฉํ๋ ORM (Object-Relational Mapping) ํ๋ ์์ํฌ ์ค ํ๋
- H2 : ๊ฒฝ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)
- H2์ Hibernate๋ ์๋ก ๋ค๋ฅธ ๊ฒ์ด๋ฉฐ, H2๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด๊ณ Hibernate๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค๋ฅผ ์ํ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- H2 ์ค์น ํด๋ > bin ํด๋ > h2w.bat : H2๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ฝ์ (์์ฑ๋ด์ฉ p.179)
โ
- ์ํฐํฐ : ํ ์ด๋ธ๊ณผ ๋งคํ๋๋ ์๋ฐ ํด๋์ค
- ์ํฐํฐ ๋งคํ์ ์ฌ์ฉ๋๋ ์ ๋ํ ์ด์
@Entity
|
@Entity๊ฐ ์ค์ ๋ ํด๋์ค = ์ํฐํฐ
๊ธฐ๋ณธ์ ์ผ๋ก ํด๋์ค ์ด๋ฆ๊ณผ ๋์ผํ ํ
์ด๋ธ๊ณผ ๋งคํํจ
|
@Table
|
์ํฐํฐ ์ด๋ฆ๊ณผ ๋งคํ๋ ํ
์ด๋ธ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, name ์์ฑ์ ์ฌ์ฉํ์ฌ ๋งคํ.
|
@Id
|
ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ๋งคํ
์ํฐํฐ ํ์ ์ ๋ํ
์ด์
. @Id์๋ ์ํฐํฐ๋ ์ฌ์ฉํ ์ ์์
|
@GeneratedValue
|
@Id๊ฐ ์ ์ธ๋ ํ๋์ ๊ธฐ๋ณธ ํค ๊ฐ์ ์๋์ผ๋ก ํ ๋นํจ
|
- JPA ๋ฉ์ธ ์ค์ ํ์ผ : META_INF ํด๋ > persistence.xml
- persistence.xml : ์ด ํ์ผ์ ์์์ฑ ์ ๋(JPA๊ฐ ์ฐ๋ํ DB์ ๋ณด ๋ค์ด์์)์ด ์ค์ ๋์ด ์์
- ์์์ฑ ์ ๋์์ ์ค์ํ ์ค์ : hibernate.dialect ์์ฑ. JPA ๊ตฌํ์ฒด๊ฐ ์ฌ์ฉํ Dialectํด๋์ค๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉํจ. (์ด ์์ฑ์ H2Dialect ํด๋์ค๋ก ์ค์ ํ๋ฉด H2์ฉ SQL์ด ๋ง๋ค์ด์ง๊ณ , OracleDialect๋ก ๋ณ๊ฒฝํ๋ฉด ์ค๋ผํด์ฉ SQL์ด ๋ง๋ค์ด์ง)
- ํด๋์ค ๋ณ์ ์์ /= ํ ์ด๋ธ ์ปฌ๋ผ ์์
โ
โ
โ
โ
โถJPA ์ค์
โท์์์ฑ ์ ๋ ์ค์
- persistence.xml ํ์ผ๋ก ๋ณต์กํ ํ๊ฒฝ์ค์ ์ ๊ด๋ฆฌํจ
- persistence.xml ํ์ผ : <persistence>๊ฐ ๋ฃจํธ, <persistence-unit>์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ง.
โ
โ ์์์ฑ ์ ๋ ์ด๋ฆ ์ค์
- ์์์ฑ ์ ๋์ ์ฐ๋ํ๋ ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋น ํ๋ ์ฉ ์ค์ ํจ. <persistence-unit> ์ฌ๋ฌ ๊ฐ ๋ฑ๋ก ์ name ์ง์ ํด์ผํจ
- ์์์ฑ ์ ๋์ ์ค์ ํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์์์ฑ ์ ๋ ์ค์ ์ ๋ก๋ฉํด์ EntityManagerFactory ๋ฅผ ์์ฑํ ์ ์์ → ์ ํ๋ฆฌ์ผ์ด์ ์์ JPA๋ฅผ ์ด์ฉํ๊ธฐ ์ํ EntityManager ๊ฐ์ฒด๋ฅผ ์ป์ด๋
โโก์ํฐํฐ ํด๋์ค ๋ฑ๋ก
- ์์์ฑ ์ ๋ ์ค์ ์์ ๊ฐ์ฅ ๋จผ์ ๋ฑ๋ก๋๋ ์ ๋ณด๋ ์ํฐํฐ ํด๋์ค ๋ชฉ๋ก
- ํด๋์ค๋ฅผ ๋ง๋๋ ์๊ฐ ์๋์ผ๋ก persistence.xml์ ์ํฐํฐํด๋์ค๊ฐ ๋ฑ๋ก๋จ
โโข๋ฐ์ดํฐ์์ค ์ค์
javax.persistence.jdbc.driver
|
JDBC ๋๋ผ์ด๋ฒ ํด๋์ค
|
javax.persistence.jdbc.user
|
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ด๋
|
javax.persistence.jdbc.password
|
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ
|
javax.persistence.jdbc.url
|
JDBC URL ์ ๋ณด
|
โฃDialect ํด๋์ค ์ค์
- JPA๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ ํ๋ SQL์ ์์ฑํจ
- ์ด๋ค Dialect๊ฐ ์ค์ ๋๋๋์ ๋ฐ๋ผ ์์ฑ๋๋ SQL์ด ๋ฌ๋ผ์ง
โโคJPA๊ตฌํ์ฒด ์ค์
- JPA๋ ORMํ๋ ์์ํฌ๋ฅผ ๋์ผํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๋ถ๊ณผํ๋ฏ๋ก, ์ค์ง์ ์ผ๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํ JPA๊ตฌํ์ฒด์ ๋ํ ์ค์ ์ด ๋ฐ๋์ ํ์ํจ
hibernate.show_sql
|
Hibernate๊ฐ ์คํํ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ก๊ทธ๋ก ์ถ๋ ฅํ ์ง ์ฌ๋ถ๋ฅผ ์ง์
|
hibernate.format_sql
|
์ถ๋ ฅ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๋
์ฑ ์๊ฒ ํฌ๋งทํ
ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์
|
hibernate.id.new_generator_mappings
|
์ด ์ค์ ์ true๋ก ์ง์ ํ๋ฉด ์๋ก์ด ํค ์์ฑ ์ ๋ต ๋งคํ์ ์ฌ์ฉ
|
hibernate.hbm2ddl.auto
|
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์๋ ์์ฑ ๋ฐ ์
๋ฐ์ดํธ ๊ด๋ จ ํ๋กํผํฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์ ์ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ํฅ์ ๋ฏธ์นจ
create, update, validate, create-drop, none
|
โ
โท์ํฐํฐ ๋งคํ ์ค์
- @Entity : ์๋ฐํด๋์ค๋ฅผ JPA๊ฐ ๊ด๋ฆฌํ๋ ์ํฐํฐ๋ก ์ธ์ํ๊ฒ ํจ
- @Id : ๋ค๋ฅธ ๊ฐ์ฒด์ ์๋ณํ ์ ์๋ PK์ง์
- @Table : ์ํฐํฐ์ด๋ฆ/=ํ ์ด๋ธ ์ผ ๋ ์ฌ์ฉํจ. ๋งคํํ ํ ์ด๋ธ ์ด๋ฆ์ ์ ํํ ์ง์ ํจ
- @Column : ์ํฐํฐ์ ๋ณ์์ ํ ์ด๋ธ์ ์นผ๋ผ์ ๋งคํํ ๋ ์ฌ์ฉํจ. ์ผ๋ฐ์ ์ผ๋ก ๋ณ์์ด๋ฆ/=์นผ๋ผ์ด๋ฆ ์ผ ๋ ์ฌ์ฉํจ.
- ์ง์ํ๋ ์์ฑ : name, unique, nullable, insertable, updatable, columnDefinition. percision, scale
- @Temporal : java.util.Dateํ์ ์ ๋ ์ง๋ฅผ ๋งคํํ ๋ ์ฌ์ฉํจ. TempotalType์ ์ด์ฉํ์ฌ์ ๋ ์ง/์๊ฐ/๋ ์ง+์๊ฐ ์ถ๋ ฅํ ์ ์์
- @Transient : ์ํฐํฐ ํด๋์ค ๋ด์ ํน์ ๋ณ์๋ฅผ ์์์ฑ ํ๋์์ ์ ์ธํ ๋ ์ฌ์ฉํจ. ex) ํ์์์ฑ
โโ
โท์๋ณ์ ๊ฐ ์๋์ฆ๊ฐ
- @GeneratedValue : ์๋ณ์ ํ๋์ ์๋์ผ๋ก ์ฆ๊ฐ๋ ๊ฐ์ ํ ๋นํ ๋
@GeneratedValue ์์ฑ
|
โ
|
|
strategy
|
์๋์์ฑ์ ๋ต
|
GenerationType.TABLE
|
โ
|
โ
|
GenerationType.SEQUENCE
|
โ
|
โ
|
GenerationType.IDENTITY
|
โ
|
โ
|
GenerationType.AUTO
|
generator
|
์ด๋ฏธ ์์ฑ๋ ํค ์์ฑ๊ธฐ๋ฅผ ์ฐธ์กฐ
|
โ
|
- ์ํ์ค ์ ๋ต ์ฌ์ฉํ๊ธฐ : ํด๋์ค ์ ์ธ๋ถ์ @SequenceGenerator ์ถ๊ฐ
โโ
โ
โ
โ
โถJPA API
โทEMF์ EM
โ persistence.xml ํ์ผ ์ค์ : Persistence Unit์ ์ ์ํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด, ์ํฐํฐ ํด๋์ค ์์น, JPA ์์ฑ ๋ฑ์ ์ง์
โกEntityManagerFactory ์์ฑ : persistence.xml ํ์ผ์ ์ ์๋ Persistence Unit ์ค์ ์ ๋ฐํ์ผ๋ก EntityManagerFactory ๊ฐ์ฒด๋ฅผ ์์ฑํจ. (์ด ๊ฐ์ฒด๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ์ํฐํฐ ๋งค๋์ ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋จ)โ
โขEntityManager ์์ฑ : EntityManagerFactory๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ EntityManager๋ฅผ ์์ฑํจ. (EntityManager๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ ์์ฉ์ ๊ด๋ฆฌํ๊ณ JPA ์์ ์ ์ํ)
โฃEntityManager ์ฌ์ฉ : EntityManager๋ฅผ ์ฌ์ฉํ์ฌ ์ํฐํฐ์ CRUD ์์ ์ ์ํ. (EntityManager๋ JPA์ ํต์ฌ ๊ฐ์ฒด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ ํ๋ฉฐ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ๊ด๋ฆฌ)
โ
- EntityManager๊ฐ ์ ๊ณตํ๋ CRUD๊ธฐ๋ฅ์ ๋ฉ์๋
persist(Object entity)
|
INSERT, ์ํฐํฐ๋ฅผ ์์ํ
|
merge(Object entity)
|
UPDATE, ์ค์์ ์ํ์ ์ํฐํฐ๋ฅผ ์์ํ
|
remove(Object entity)
|
DELETE, ์์ ์ํ์ ์ํฐํฐ๋ฅผ ์ ๊ฑฐ
|
find(Class<T> entityClass, Object pk)
|
SELECT ONE, ํ๋์ ์ํฐํฐ๋ฅผ ๊ฒ์
|
createQuery(String ipql, Class<T> resultClass)
|
SELECT LIST, JPQL์ ํด๋นํ๋ ์ํฐํฐ ๋ชฉ๋ก์ ๊ฒ์ํจ
|
โ
โท์์์ฑ ์ปจํ ์คํธ์ ์ํฐํฐ ์ํ
- ์์์ฑ ์ปจํ ์คํธ : ์ํฐํฐ ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๋ ์ผ์ข ์ ์ปจํ ์ด๋. ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ . EntityManager๋ฅผ ์์ฑํ ๋ ์๋์ผ๋ก ๋ง๋ค์ด์ง. EntityManager๋ฅผ ํตํด์ ์ ๊ทผ ๊ฐ๋ฅ. EntityManager์ ๋์ผํ๊ฐ๋ ์ผ๋ก ์ดํดํ๊ธฐ
- ์์์ฑ ์ปจํ ์คํธ์ ๋ฑ๋ก๋ ์ํฐํฐ๋ EntityManager๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ํตํด ๊ด๋ฆฌ๋จ
- ์ํ : ๋น์์(New), ์์(Marged), ์ค์์(Detached), ์ญ์ (Removed)
โ
์ํฐํฐ์ ์ํ
๋น์์ ์ํ
|
์ํฐํฐ ๊ฐ์ฒด๋ง ์์ฑํ์ ๋ฟ, ์์ง ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅํ์ง ์์ ์ํ
|
|
์์ ์ํ
|
EntityManager๋ฅผ ํตํด ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅ๋ ์ํ
(find()๋ฅผ ํตํด์๋ ๊ฐ๋ฅํจ. ์กฐํํ๊ณ ์ ํ๋ ์ํฐํฐ๊ฐ ์๋ค๋ฉด DB์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ฌ ์๋ก์ด ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์์ฑ ์ปจํ
์คํธ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ)
|
EntityManager์ persist() ์ฌ์ฉ
โ
+ find()
โ
|
์ค์์ ์ํ
|
ํ ๋ฒ ์์์ฑ ์ปจํ
์คํธ๋ฅผ ๋ค์ด๊ฐ ์ํฐํฐ๊ฐ ์ด๋ค ์ด์ ์์ ์์์ฑ ์ปจํ
์คํธ์์ ๋ฒ์ด๋ ์ํ
(๋ฒ์ด๋ฌ๊ธฐ ๋๋ฌธ์) ๊ฐ์ ์์ ํด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฌด๋ฐ ์ํฅ์ ๋ฏธ์น์ง ๋ชปํจ
๋ฉ๋ชจ๋ฆฌ์์ ์์ ์ฌ๋ผ์ง ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ merge()๋ฅผ ํตํด ๋ค์ ์์ ์ํ๋ก ์ ํ๋ ์ ์์
|
EntityManager์ detach(), clear(), close()๋ฅผ ํธ์ถํ์ ๋
|
์ญ์ ์ํ
|
์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ
์คํธ์์๋ ์ ๊ฑฐ๋๊ณ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ ์ญ์ ๋ ์ํ
|
remove()๋ฅผ ์ด์ฉํด์ ์ญ์
|
- EntityManager์ persist()๋ฅผ ํตํด ํน์ ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ๋ฑ๋กํ๋ฉด ์ ์ฅ๋ ์ํฐํฐ์ ํด๋นํ๋ INSERT๊ฐ ์คํ๋จ.
- ๊ทธ๋ฐ๋ฐ persist()๋ฉ์๋๋ฅผ ํธ์ถํ๋ค๊ณ ํด์ JPA๊ฐ ๊ณง๋ฐ๋ก ํ ์ด๋ธ์ INSERT๋ฅผ ์คํํ์ง ์์.
- ์์์ฑ ์ปจํ ์คํธ ๋ด๋ถ์ 1์ฐจ ์บ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ. 1์ฐจ ์บ์์ ์ ์ฅ๋ ์ํฐํฐ๋ EntityTransaction์ผ๋ก ํธ๋์ญ์ ์ ์ข ๋ฃํ ๋ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋จ
- ํ๋ฌ์(Flush) : ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅ๋ ์ํฐํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๋ ๊ณผ์
โ
โ
โท์์์ฑ ์ปจํ ์คํธ์ SQL์ ์ฅ์
์ํฐํฐ ์ ์ฅํ๊ธฐ
- ์์์ฑ ์ปจํ ์คํธ๋ [1์ฐจ ์บ์], [SQL ์ ์ฅ์]๋ฅผ ๊ฐ์ง๊ณ ์์
- ๊ณ์ํด์ ์๋ก์ด ์ํฐํฐ๊ฐ ๋ฑ๋ก๋๋ฉด 1์ฐจ ์บ์์๋ ์ํฐํฐ, SQL์ ์ฅ์์๋ SQL๊ตฌ๋ฌธ๋ค์ด ์ ์ฅ๋จ
- commit()๋ฉ์๋๋ก ํธ๋์ ์ ์ ์ข ๋ฃํ๋ฉด SQL ์ ์ฅ์์ ์ ์ฅ๋์๋ ๋ชจ๋ SQL์ด ํ๊บผ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ก๋จ
โ
์ํฐํฐ ์์ ๊ณผ ์ค๋ ์ท
- ์ํฐํฐ ์์ ์ ์ํด์๋ ์์ ํ ์ํฐํฐ๊ฐ ๋ฐ๋์ ์์์ฑ ์ปจํ ์คํธ์ ์์ด์ผ ํจ(์์ผ๋ฉด ์์ธ)
- ์ค๋ ์ท : JPA๋ ๊ฒ์๋ ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ ๋ ์ํฐํฐ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด์ ๋ณ๋์ ์ปฌ๋ ์ ์ ์ ์ฅํจ
- ํธ๋์ญ์ ์ ์ข ๋ฃ๋ ๋ ์ค๋ ์ท์ ์ ์ฅ๋ ์๋ ์ํฐํฐ VS 1์ฐจ ์บ์์ ์ ์ฅ๋ ์ํฐํฐ๋ฅผ ๋น๊ตํด์ ๋ณ๊ฒฝ๋ ๊ฐ์ ์ด์ํด์ UPDATE๋ง๋ฆ
- ์ํฐํฐ ์์ ์์ JPA์ ๊ธฐ๋ณธ ์ ๋ต์ ๋ชจ๋ ํ๋ ์์ (์์ ์ฟผ๋ฆฌ๊ฐ ํญ์ ๊ฐ์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ)
โ
์ํฐํฐ ์ญ์ ํ๊ธฐ
- ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์์ฑ ์ปจํ ์คํธ์ ์ญ์ ํ ์ํฐํฐ๊ฐ ์๋ค๋ฉด ์์ธ ๋ฐ์ํจ. ์ญ์ ์ ์กฐํ ํ์
โ
๋ชฉ๋ก ๊ฒ์๊ณผ JPQL
- ๋ชฉ๋ก์ ์กฐํํ๊ธฐ ์ํด์๋ JPQL(JPA์์ ์ ๊ณตํ๋ ๋ณ๋์ ์ฟผ๋ฆฌ ๋ช ๋ น)๋ฅผ ์ฌ์ฉํด์ผํจ
- ๊ฒ์ ๋์์ด ํ ์ด๋ธ์ด ์๋๋ผ ์ํฐํฐ์.
- ์ํฐํฐ ์ด๋ฆ๊ณผ ์ํฐํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ฑํจ
- JPAL๋ก ๊ฒ์ ๊ธฐ๋ฅ์ ์ํํ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ ์ SQL ์ ์ฅ์์ ์ ์ฅ๋์ด์๋ ๋ชจ๋ SQL ๊ตฌ๋ฌธ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์กํด์ผํจ(์์์ฑ ์ปจํ ์คํธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ์กฐํํ์ฌ ์์์ฑ ์ปจํ ์คํธ์ ๋ฑ๋กํ ์ ์๊ธฐ ๋๋ฌธ)
'๐ฅ๏ธ ๋ฐฑ์๋ > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JPA] ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ (1) (1) | 2023.11.26 |
---|---|
[์คํ๋ง๋ถํธ ํต์คํํธ] ch.5 ์คํ๋ง๋ฐ์ดํฐ JPA (0) | 2023.11.23 |
[์คํ๋ง๋ถํธ ํต์คํํธ] ch.3 ํ ์คํธ, ๋ก๊น , ๋น๋ (1) | 2023.11.23 |
[์คํ๋ง๋ถํธ ํต์คํํธ] ch.2 ์์กด์ฑ๊ณผ ์๋์ค์ (0) | 2023.11.23 |
[๋ณด์] ์ฟ ํค์ ์ธ์ ๊ทธ๋ฆฌ๊ณ JWT (1) | 2023.11.23 |