Sample App Features
Application μμλ κΈ°λ³Έμ μΌλ‘ object μ λν Create, Read, Update, Delete μ κΈ°λ₯μ μ 곡νλ€. μ΄λ¬ν κΈ°λ₯μ μ 곡νλ App μ CRUD Application μ΄λΌκ³ λ λΆλ₯Έλ€.
Data Access Obejct

DAO λ Data Access Obejct, μ¦ Database μ κ·Όμ μν obejct λ‘, database μ interfacing νλ κΈ°λ₯μ λ΄λΉνλ object λλ Design Pattern μ μλ―Ένλ€.
μ£Όλ‘ μμμ μΈκΈν CRUD μμ μ μ²λ¦¬νλ©°, Business Logic κ³Ό Data Access Logic μ λΆλ¦¬μν€κΈ° μνμ¬ μ¬μ©λλ€.
DAO λ λ€μ λͺ κ°μ§μ methods λ₯Ό κ°μ§λ€.
save(...)findById(...)findAll()findByLastName(...)update(...)delete(...)deleteAll()
λν DAO λ μ΄μ μ JPA λ₯Ό ν΅νμ¬ Database μ data λ₯Ό save νλ λ°©λ²μμ μΈκΈν JPA Entity Manager λΌλ κ²μ νμλ‘ νκ² λλ€.
JPA Entity Manager
JPA Entity Manger λ entity λ€μ saving νκ³ retrieving νκΈ° μν ν΅μ¬ Interface μ΄μ component μ΄λ€. μ΄λ₯Ό ν΅νμ¬ entity μ lifecycle μ κ΄λ¦¬νκ³ , Database μ λν CRUD μμ
λ° JPQL query λ₯Ό μ€νν μ μλ€.

λν λ€μ JPA Entity Manager λ Data Source λΌλ κ²μ νμλ‘ νκ² λλλ°, Data Source λ Database μμ μ°κ²°μ κ΄λ¦¬νκΈ° μν Interface λ‘, Java μμ Database μ°κ²°μ μ€μ νκ³ μ 곡νλ μν μ μννλ€.
μ΄λ€ JPA Entity Manager μ Data Source λ application.properties file μμμ μ€μ (JDBC URL, user id, password λ±)μ κΈ°λ°μΌλ‘ Spring Boot κ° μλμΌλ‘ μμ±νλ€.
μ΄ν κ°λ°μλ Spring Boot κ° μλμΌλ‘ μμ±ν Entity Manager λ₯Ό, μνλ DAO μ autowire νκ±°λ inject νμ¬ μ¬μ©ν μ μλ€.
Entity Manger vs JpaRepository
μ°μ JpaRepository λ Spring Data JPA module μμ μ 곡νλ Interface λ‘, μ΅μνμ coding μΌλ‘ Database μ λν CRUD μμ μ λ§€μ° κ°λ¨νκ² μ²λ¦¬ν μ μλλ‘ λμμ€λ€.
λ€μμ Entity Manager μ JpaRepository μ λν μ°¨μ΄μ μ΄λ€.
| νλͺ© | EntityManager | JpaRepository |
|---|---|---|
| μ μ | JPA νμ€ API λ‘, entity μ lifecycle κ΄λ¦¬ λ° DB μ μ§μ μνΈμμ©νλ Interface | Spring Data JPA μμ μ 곡νλ Interface λ‘, κΈ°λ³Έ CRUD μμ κ³Ό Paging λ° Sorting κΈ°λ₯μ μλμΌλ‘ ꡬν |
| κΈ°λ₯ | Entity μ μ₯, μμ , μμ , μ‘°ν λ° JPQL μμ± κ°λ₯ | κΈ°λ³Έ CRUD method(save,Β findById,Β findAllΒ λ±) μ Paging λ° Sorting κΈ°λ₯ μ 곡 |
| 볡μ‘ν Query μ²λ¦¬ | 볡μ‘ν λμ query μμ±μ μ ν©νλ©°, native SQL μ μ¬μ©ν μ μμ | method μ΄λ¦μΌλ‘ κ°λ¨ν query μμ± κ°λ₯νμ§λ§ 볡μ‘ν 쿼리λ μ νμ μ΄λ©°Β @Queryλ‘ μ²λ¦¬ κ°λ₯. |
| μ ν©ν μ¬μ© μ¬λ‘ | 볡μ‘ν query λ native SQLμ μ¬μ©ν΄μΌ νλ κ²½μ° | κ°λ¨ν CRUD μμ λ° paginateion, sorring μ²λ¦¬κ° νμν κ²½μ° |
Data Access Layer μμ μ¬μ©ν μ μλ κΈ°μ μ€ μ΄λ€ κ²μ μ νν΄μΌ ν μ§λ project μ spec μ λ°λΌμ μ νν΄μΌ νλ€. μλ§ λ κ° λͺ¨λ μ¬μ©νλ κ²½μ°λ μμ κ²μ΄λ€.