νΈλμμ μ¬μ© μ½λ
//νΈλμμ
μμ
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
try {
//λΉμ¦λμ€ λ‘μ§
bizLogic(fromId, toId, money);
transactionManager.commit(status); //μ±κ³΅μ 컀λ°
} catch (Exception e) {
transactionManager.rollback(status); //μ€ν¨μ λ‘€λ°±
throw new IllegalStateException(e);
}
νΈλμμ μ μ¬μ©νλ λ‘μ§μ μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ ν¨ν΄μ΄ λ°λ³΅λλ κ²μ νμΈν μ μλ€.
μ΄λ° ννλ κ°κ°μ μλΉμ€μμ λ°λ³΅λλ€. λ¬λΌμ§λ λΆλΆμ λΉμ¦λμ€ λ‘μ§ λΏμ΄λ€.
μ΄λ΄ λ ν νλ¦Ώ μ½λ°± ν¨ν΄μ νμ©νλ©΄ μ΄λ° λ°λ³΅ λ¬Έμ λ₯Ό κΉλνκ² ν΄κ²°ν μ μλ€.
νΈλμμ ν νλ¦Ώ
TransactionTemplate λΌλ ν νλ¦Ώ ν΄λμ€λ₯Ό μ 곡
public MemberServiceV3_2(PlatformTransactionManager transactionManager,
MemberRepositoryV3 memberRepository) {
this.txTemplate = new TransactionTemplate(transactionManager);
this.memberRepository = memberRepository;
}
TransactionTemplate μ μ¬μ©νλ €λ©΄ transactionManager κ° νμνλ€.
μμ±μμμ transactionManager λ₯Ό μ£Όμ λ°μΌλ©΄μ TransactionTemplate μ μμ±νλ€.
νΈλμμ ν νλ¦Ώ μ¬μ© λ‘μ§
txTemplate.executeWithoutResult((status) -> {
try {
//λΉμ¦λμ€ λ‘μ§
bizLogic(fromId, toId, money);
} catch (SQLException e) {
throw new IllegalStateException(e);
}
});
νΈλμμ ν νλ¦Ώ λλΆμ νΈλμμ μ μμνκ³ , 컀λ°νκ±°λ λ‘€λ°±νλ μ½λκ° λͺ¨λ μ κ±°λμλ€.
νΈλμμ ν νλ¦Ώμ κΈ°λ³Έ λμμ λ€μκ³Ό κ°λ€.
λΉμ¦λμ€ λ‘μ§μ΄ μ μ μνλλ©΄ 컀λ°νλ€.
μΈμ²΄ν¬ μμΈκ° λ°μνλ©΄ λ‘€λ°±νλ€.
μ 리
νΈλμμ ν νλ¦Ώ λλΆμ, νΈλμμ μ μ¬μ©ν λ λ°λ³΅νλ μ½λλ₯Ό μ κ±°ν μ μμλ€.
νμ§λ§ μ΄κ³³μ μλΉμ€ λ‘μ§μΈλ° λΉμ¦λμ€ λ‘μ§ λΏλ§ μλλΌ νΈλμμ
μ μ²λ¦¬νλ κΈ°μ λ‘μ§μ΄ ν¨κ» ν¬ν¨λμ΄ μλ€.
μ ν리μΌμ΄μ
μ ꡬμ±νλ λ‘μ§μ ν΅μ¬ κΈ°λ₯κ³Ό λΆκ° κΈ°λ₯μΌλ‘ ꡬλΆνμλ©΄
μλΉμ€ μ μ₯μμ λΉμ¦λμ€ λ‘μ§μ ν΅μ¬ κΈ°λ₯μ΄κ³ , νΈλμμ μ λΆκ° κΈ°λ₯μ΄λ€.
μ΄λ κ² λΉμ¦λμ€ λ‘μ§κ³Ό νΈλμμ
μ μ²λ¦¬νλ κΈ°μ λ‘μ§μ΄ ν κ³³μ μμΌλ©΄ λ κ΄μ¬μ¬λ₯Ό νλμ ν΄λμ€μμ μ²λ¦¬νκ² λλ€.
κ²°κ³Όμ μΌλ‘ μ½λλ₯Ό μ μ§λ³΄μνκΈ° μ΄λ €μμ§λ€.
μλΉμ€ λ‘μ§μ κ°κΈμ ν΅μ¬ λΉμ¦λμ€ λ‘μ§λ§ μμ΄μΌ νλ€.
νμ§λ§ νΈλμμ κΈ°μ μ μ¬μ©νλ €λ©΄ μ΄μ© μ μμ΄ νΈλμμ μ½λκ° λμμΌ νλ€.
μ΄λ»κ² νλ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμκΉ?
μλΉμ€ κ³μΈ΅μ μμν λΉμ¦λμ€ λ‘μ§λ§ λ¨κΈ΄λ€λ λͺ©νλ₯Ό λ¬μ±νκΈ° μν΄μλ
μ€νλ§ AOPλ₯Ό ν΅ν΄ νλ‘μλ₯Ό λμ νλ©΄ λ¬Έμ λ₯Ό κΉλνκ² ν΄κ²°ν μ μλ€.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard
'Spring > Spring DB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ€νλ§ DB 1νΈ] - 11. μ€νλ§ λΆνΈμ μλ 리μμ€ λ±λ‘ (0) | 2023.03.25 |
---|---|
[μ€νλ§ DB 1νΈ] - 10. νΈλμμ AOP / @Transactional (0) | 2023.03.25 |
[μ€νλ§ DB 1νΈ] - 8. νΈλμμ μΆμν (1) | 2023.03.24 |
[μ€νλ§ DB 1νΈ] - 7. μ€νλ§κ³Ό λ¬Έμ ν΄κ²° - νΈλμμ (0) | 2023.03.21 |
[μ€νλ§ DB 1νΈ] - 6. DB λ½ (0) | 2023.03.19 |