SpringBoot JPA
Spring data JPA
์ถ๊ฐ์ ์ธ ์ ๋ํ ์ด์ : @PersistenceContext, @Transactional
์๋ฐํ๊ฒฝ์ด ์๋ Spring boot์์ JPA๊ฐ ์ด๋ป๊ฒ ๋์๋ ์ง ์ดํด๋ณด์ (memo PJ)
- ์ฐ์ bulid.gradle ๊ณผ application.properties ์ JPA ๊ด๋ จ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค. (ddl-auto=update)
- Memo ํด๋์ค ๋ํ entity ํด๋์ค๋ก ๋ง๋ค๊ธฐ ์ํด @Entity ์ ๋ํ ์ด์ ์ถ๊ฐ.
- spring ํ๊ฒฝ์์๋ application.properties ๋ด์ฉ์ ๋ฐํ์ผ๋ก emf, em ์ ์๋์ผ๋ก ์์ฑํด์ค๋ค. (java ํ๊ฒฝ์์๋ persistence.xml์ ๋ง๋ค์์)
- ์ฌ์ฉ๋ฐฉ๋ฒ์ @PersistenceContext ์ ๋ํ ์ด์ ์ ์ถ๊ฐํด์ฃผ๋ฉด spring์ด ๋ง๋ em์ ์ฝ๊ฒ ์ฃผ์ ๋ฐ์ ์ ์๋ค.
Spring์ ํธ๋์ญ์
- ์ถ๊ฐ์ ์ธ๊ฒ ์์ด @Transactional ์ ๋ํ ์ด์ ์ ์ถ๊ฐํด์ฃผ๋ฉด ํด๋์ค๋ ๋ฉ์๋์ ํธ๋์ญ์ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- JPA๋ฅผ ์ฌ์ฉํ์ฌ DB์ ๋ฐ์ดํฐ ์ ์ฅ, ์์ , ์ญ์ ํด๋น ์์ ๋ค์ ํ๊ธฐ ์ํด์ ํธ๋์ญ์ ์ ์ฉ์ด ๋ฐ๋์ ํ์ํ๋ค.
# ์์์ฑ ์ปจํ ์คํธ์ ํธ๋์ญ์ ์ ์๋ช ์ฃผ๊ธฐ
: ์คํ๋ง ์ปจํ ์ด๋ ํ๊ฒฝ์์๋ ํธ๋์ญ์ ๊ณผ ์์์ฑ ์ปจํ ์คํธ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋์ผํ๋ค
ํธ๋์ญ์ ์ด ์ ์ง๋๋ ๋์์๋ ์์์ฑ ์ปจํ ์คํธ ๋ํ ์ ์ง๋๊ธฐ ๋๋ฌธ์ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.(ex 1์ฐจ ์บ์, ๋ณ๊ฒฝ ๊ฐ์ง)
# ํธ๋์ญ์ ์ ํ ํ ์คํธ
- TransactionTest ํด๋์ค
@Test
@Disabled
@Transactional
@Rollback(value = false)
@DisplayName("ํธ๋์ญ์
์ ํ ํ
์คํธ")
void test3() {
memoRepository.createMemo(em); //test3(๋ถ๋ชจ), createMemo(์์)
System.out.println("ํ
์คํธ test3 ๋ฉ์๋ ์ข
๋ฃ");
}
- MemoRepository
@Transactional
public Memo createMemo(EntityManager em) {
Memo memo = em.find(Memo.class, 1);
memo.setUsername("Robbie");
memo.setContents("@Transactional ์ ํ ํ
์คํธ ์ค!");
System.out.println("createMemo ๋ฉ์๋ ์ข
๋ฃ");
return memo;
<๊ฒฐ๊ณผ>
: ์์๋ฉ์๋ ์ข ๋ฅ ํ ๋ฐ๋ก update๊ฐ ๋๋ ๊ฒ์ด ์๋ ๋ถ๋ชจ ๋ฉ์๋์ ํธ๋์ญ์ ์ด ํฉ๋ฅ๋๋ฉฐ ๋ถ๋ชจ ๋ฉ์๋ ์ข ๋ฃ ํ ํธ๋์ญ์ ์ปค๋ฐ๋๊ณ ๊ทธ ๋ค์์ update๊ฐ ์คํ๋์๋ค.
Spring data JPA
: ์ด๋ JPA๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด๋ ํ๋์ ๋ชจ๋์ด๋ฉฐ JPA๋ฅผ ์ถ์ํ์ํจ Repository ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
- ํด๋น ์ธํฐํ์ด์ค๋ JPA ๊ตฌํ์ฒด(hibernate)๋ฅผ ์ฌ์ฉํด ๊ตฌํํ ํด๋์ค๋ฅผ ํตํด ์ฌ์ฉํ๋ค.
<์ฌ์ฉ๋ฐฉ๋ฒ>
- JpaRepository <entity ํด๋์ค, id ๋ฐ์ดํฐ ํ์ >๋ฅผ ์์๋ฐ๋ ์ธํฐํ์ด์ค๋ก ์ ์ธํ๋ค.
- ์ด๋ Spring data JPA์ ์ํด bean ์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค.
- DB์ memo ํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐ๋์ด CRUD ์์ ์ ํ๋ ์ธํฐํ์ด์ค๊ฐ ๋์๋ค
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL Spring #3-2 (0) | 2023.12.15 |
---|---|
TIL Spring #3-1 (0) | 2023.12.14 |
TIL Spring #2-4 (0) | 2023.12.12 |
TIL Spring #2-3 (0) | 2023.12.12 |
TIL Spring 2-2 (0) | 2023.12.08 |