#13 spring transaction - exception : rollback, commit
This commit is contained in:
@@ -1 +1,5 @@
|
||||
logging.level.org.springframework.transaction.interceptor=TRACE
|
||||
logging.level.org.springframework.transaction.interceptor=TRACE
|
||||
logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG
|
||||
#JPA log
|
||||
logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
|
||||
logging.level.org.hibernate.resource.transaction=DEBUG
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.example.springtransaction.exception;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.TestConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@SpringBootTest
|
||||
public class RollbackTest {
|
||||
|
||||
@Autowired
|
||||
RollbackService rollbackService;
|
||||
|
||||
@Test
|
||||
void runTimeException() {
|
||||
Assertions.assertThatThrownBy(() -> rollbackService.runtimeException())
|
||||
.isInstanceOf(RuntimeException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void checkedException() {
|
||||
Assertions.assertThatThrownBy(() -> rollbackService.checkedException())
|
||||
.isInstanceOf(MyException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void rollbackFor() {
|
||||
Assertions.assertThatThrownBy(() -> rollbackService.rollbackFor())
|
||||
.isInstanceOf(MyException.class);
|
||||
}
|
||||
|
||||
@TestConfiguration
|
||||
static class RollbackTestConfig {
|
||||
|
||||
@Bean
|
||||
RollbackService rollbackService() {
|
||||
return new RollbackService();
|
||||
}
|
||||
}
|
||||
|
||||
@Slf4j
|
||||
static class RollbackService {
|
||||
|
||||
// 런타임 예외 발생 -> 롤백
|
||||
@Transactional
|
||||
public void runtimeException() {
|
||||
log.info("call runtimeException");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
// 체크 예외 발생 -> 커밋
|
||||
@Transactional
|
||||
public void checkedException() throws MyException {
|
||||
log.info("call checkedException");
|
||||
throw new MyException();
|
||||
}
|
||||
|
||||
// 체크 예외 rollbackFor 지정 -> 롤백
|
||||
@Transactional(rollbackFor = MyException.class)
|
||||
public void rollbackFor() throws MyException {
|
||||
log.info("call rollbackFor");
|
||||
throw new MyException();
|
||||
}
|
||||
}
|
||||
|
||||
static class MyException extends Exception {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user