1. κ°μ
JPA λ₯Ό μ΄μ©ν ν μ€νΈ νλ‘μ νΈλ₯Ό μ§ννλ μ€ μ΄κΈ° λ°μ΄ν°λ₯Ό λλμΌλ‘ INSERT ν΄μ£Όλ λΉμ μμ±νλ € νμλ€.
@PostConstruct
λ₯Ό ν΅ν΄ Spring Boot μ ν리μΌμ΄μ
μ΄ κΈ°λλλ μμ μ μμ±ν΄λ λ‘μ§μ μν΄ ν
μ€νΈ λ°μ΄ν°λ€μ΄ persist λλ λ°©μμ΄μλ€.
νμ§λ§ JPA λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό Insert νκΈ° μν΄μλ νΈλμμ
μ΄ νμνκ³ , λκ° μ°μ°ν λλμ λ€μμ§λ§ λμΆ© @Transactional
μ λ
Έν
μ΄μ
λ§ λΆμ΄κ³ μλμ μμΌλ³΄μλ€.
μ½λλ₯Ό 보면 λ€μκ³Ό κ°λ€.
@Component
@Transactional
public class TestDataInit {
@PersistenceContext
private EntityManager em;
@PostConstruct
public void init() {
for (int i = 0; i < 50; i++) {
Member member = new Member("member" + i);
Reservation reservation = new Reservation(member);
em.persist(reservation);
}
}
}
2. λ¬Έμ λ°μ
νμ§λ§ μμλ λ€μκ³Ό κ°μ μλ¬λ©μμ§κ° λνλλ©΄μ κΈ°λμ μ€ν¨νμλ€.
Error creating bean with name 'testDataInit': Invocation of init method failed;
nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
λ¬Έμ λ AOP μ€νκ³Ό μ€νλ§ μ»¨ν
μ΄λ μ΄κΈ°νμ μμ μ°¨μ΄λλ¬Έμ λ°μνλλ°, μ€νλ§ μ»¨ν
μ΄λκ° μ λΆ μ΄κΈ°ν λμ΄μΌ AOPκ° μ μ©λκΈ° λλ¬Έμ @PostConstruct
μ λ
Έν
μ΄μ
(컨ν
μ΄λ μ΄κΈ°ν μμ ) μλ μ μΈμ νΈλμμ
κ΄λ¦¬λ₯Ό μ¬μ©ν μ μμλ κ²μ΄λ€.
3. ν΄κ²°
κ°μ₯ κ°λ¨ν λ°©λ²μ μ μΈμ νΈλμμ κ΄λ¦¬ (AOP μ¬μ©) μμ νλ‘κ·Έλλ° λ°©μ νΈλμμ κ΄λ¦¬λ‘ μ ννλ κ²μ΄λ€.
PlatformTransactionManager
μΈν°νμ΄μ€λ μ€νλ§ λΆνΈμμ μλμΌλ‘ μ£Όμ
ν΄μ£Όλ―λ‘ TrnasactionTemplate
μ μμ±νμ¬ νΈλμμ
μ λ€μκ³Ό κ°μ΄ μλμΌλ‘ μμν΄μ£Όλ©΄ μ€νλ§ μ»¨ν
μ΄λ μμ μμ μ νΈλμμ
μ νλνμ¬ jpa λ₯Ό μ¬μ©ν μ μλ€.
@PostConstruct
public void init() {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(status -> {
for (int i = 0; i < 50; i++) {
Member member = new Member("member" + i);
Reservation reservation = new Reservation(member);
em.persist(reservation);
}
return null;
});
}
μ°Έκ³
- μ μΈμ νΈλμμ : `@Transactional` μ λ Έν μ΄μ λ±μ μ΄μ©νμ¬ AOP μ μν΄ μΈλΆ μμ‘΄μ±μ μ΄μ©ν νΈλμμ
- νλ‘κ·Έλλ° νΈλμμ : `TransactionTemplate` ν΄λμ€λ±μ μ΄μ©νμ¬ λͺ μμ μΌλ‘ νΈμΆνμ¬ λ²μλ₯Ό κ΄λ¦¬νλ νΈλμμ
'λ ΈνΈ > Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€νλ§ κΈ°λ³Έ λ³΅μ΅ 3 - λΉ μ€μ½νμ μλͺ μ£ΌκΈ° (0) | 2024.01.29 |
---|---|
μ€νλ§ μ»¨ν μ΄λλ₯Ό νμ©ν μ λ΅ν¨ν΄ (0) | 2024.01.23 |
μ€νλ§ κΈ°λ³Έ λ³΅μ΅ 2 - μ±κΈν€κ³Ό ν¨ν΄κ³Ό μ±κΈν€ 컨ν μ΄λ (0) | 2022.05.23 |
μ€νλ§ κΈ°λ³Έ λ³΅μ΅ 1 - DIP, OCP μμΉκ³Ό μ€νλ§ μ»¨ν μ΄λ (0) | 2022.04.28 |