๐ ์ํฐํฐ ์๋ช ์ฃผ๊ธฐ
โ๏ธ ๋น์์
- ์์์ฑ ์ปจํ ์คํธ๊ฐ ๊ด๋ฆฌํ์ง ์๋ ์ํ
- @Transient: ์ํฐํฐ์ ๋งคํ์ ๋ณด์์ ์ ์ธ, ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ฆฌ ๋์์์ ์ ์ธ
- new ๋ฅผ ํตํด ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์์ (์ํฐํฐ๋ณด๋ค๋ ๊ทธ๋ฅ ๊ฐ์ฒด์ธ ์ํ)
ex) User user = new User("kim", 10);
โ๏ธ ์์
- EntityManager.persist();
- ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ ์คํธ์ ์ํด ๊ด๋ฆฌ๋๋ ์ํ
- ์ํฐํฐ๊ฐ ์์์ฑ ์ปจํ ์คํธ์ ์ํด ๊ด๋ฆฌ๋๋ฏ๋ก ์ฐ๊ธฐ์ง์ฐ, ์บ์ฑ ๋ฑ์ด ๊ฐ๋ฅํ ์ํ์ด๋ค.
โ๏ธ ์ค์์
- EntityManager.detach();
- ํ ๋ฒ ์์ํ ๋์๋ ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ๋ก๋ถํฐ ๋ถ๋ฆฌ
๐ ์์์ฑ ์ปจํ ์คํธ
โ๏ธ 1์ฐจ ์บ์
- ๋ฐ๋ก ์บ์ฑ์ ๋ํ ์ค์ ์์ด ์๋ค๋ฉด ํ ํธ๋์ญ์ ๋ด ๋์ผํ PK์ ๋ํด ์บ์ฑ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
- 1์ฐจ ์บ์๋ PK๋ฅผ key๊ฐ์ผ๋ก๋ map์ ํํ
โ๏ธ @Transactional
- ์ผ๋ จ์ ํธ๋์ญ์ ๋จ์๋ฅผ ์ง์
- ๋ฉ์๋ ํน์ ํด๋์ค ๋จ์์ ์ค์ ์ฃผ์ง ์์ผ๋ฉด ๊ฐ EntityManager์ ๋ฉ์๋ ๋จ์๋ก @Transactional์ด ๋์
(SimpleJpaRepository ์ฐธ๊ณ )
โ๏ธ Flush๊ฐ ํธ์ถ๋๋ ์์
- commit ์์ (๋ฉ์๋๊ฐ ๋๋๋ ์์ )
- ๋ช ์์ ์ผ๋ก flush() ํธ์ถ
- ์๋์ ๊ฐ์ ๊ฒฝ์ฐ
@DisplayName("3. ์์์ฑ ์ปจํ
์คํธ ํ
์คํธ")
@Test
void ์์์ฑ_์ปจํ
์คํธ_ํ
์คํธ1() {
User user = userRepository.findById(1L).get();
user.setEmail("modify");
// ๋ํฐ์ฑํน์ด ๋๋ค๋ฉด ์ด ์์ ์ DB์ ์์์ฑ์ปจํ
์คํธ์ ๋ฐ์ดํฐ๋ ๋๊ธฐ๊ฐ ์๋ง์์ผ ํจ
// but, ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋ ์ต์ ์ ๊ฐ์ผ๋ก ๋๊ธฐ๊ฐ ๋ง์
// ๋ด๋ถ์ ์ผ๋ก flush๋ฅผ ์ํํด์ DB๋ก ๋ฐ์ ํ ์๋ก ์กฐํํด์ค๋ ๊ฒ
// ๋ช
์์ ์ผ๋ก flush๋ฅผ ํธ์ถํ ๊ฒ๋ ์ปค๋ฐ์์ ๋ ์๋ flush๊ฐ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ง์ง๋ง ๊ฒฝ์ฐ? (๋ณต์กํ ์ฟผ๋ฆฌ ?..)
User userAll = userRepository.findAll().get(0);
System.out.println(">>> user : " + user.getEmail()); // modify
System.out.println(">>> userAll : " + userAll.getEmail()); // modify
}
โ๏ธ generated-ddl
- jpa.generated-ddl
- jpa์ ์์ฑ (๊ตฌํ์ฒด์ ๊ด๊ณ์์ด ddl ์์ฑ)
โ๏ธ ddl-auto
- jpa.hibernate.ddl-auto
- hibernate์ ์์ฑ
ddl-auto๊ฐ ๊ตฌํ์ฒด ์ฆ ๊ตฌ์ฒด์ ์ธ ์ค์ ์ด๋ฏ๋ก ddl-auto๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ generated-ddl ์์ฑ์ ๋ฌด์๋จ
โ๏ธ datasource.initialization-mode: always
- resouces ์ดํ
schema.sql or data.sql ํ์ผ์ ๋ก๋ฉ - true ์ค์ ์ schema.sql์ด ์๋ค๋ฉด ddl-auto๋ฅผ ๋ฌด์ํ๊ณ schema.sql์ ์ค์ ๋๋ก ddl์ด ๊ตฌ์ฑ๋จ
- default: embeded
์๋ฒ ๋๋DB์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก schema.sql or data.sql ๋ก๋ฉ
๐ ์๊ฐ์ธ์ฆ

ํจ์คํธ์บ ํผ์ค [์ง์ฅ์ธ ์ค๋ฌด๊ต์ก]
ํ๋ก๊ทธ๋๋ฐ, ์์ํธ์ง, UX/UI, ๋ง์ผํ , ๋ฐ์ดํฐ ๋ถ์, ์์ ๊ฐ์, The RED, ๊ตญ๋น์ง์, ๊ธฐ์ ๊ต์ก, ์๋น์ค ์ ๊ณต.
fastcampus.co.kr
๋ณธ ํฌ์คํ ์ ํจ์คํธ์บ ํผ์ค ํ๊ธ ์ฑ๋ฆฐ์ง ์ฐธ์ฌ๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค.
'JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 8์ผ์ฐจ - Native Query, N+1 (0) | 2021.09.13 |
|---|---|
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 7์ผ์ฐจ - ํธ๋์ญ์ @Transactional (0) | 2021.09.12 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 5์ผ์ฐจ - JpaRepository, @Query (0) | 2021.09.10 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 4์ผ์ฐจ - EntityListener (0) | 2021.09.09 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 3์ผ์ฐจ - Entity, ๊ด๊ณ (0) | 2021.09.08 |