스프링 트랜잭션 전파 - 2
·
Spring Transaction
기술스택JDK 17Spring Boot 3.3.5JPA 1. 요구사항회원을 등록하고 조회한다.회원에 대한 변경 이력을 추적할 수 있도록 변경될 때 변경이력을 DB LOG 테이블에 남겨야한다.이 예제는 단순화 하기 위해 회원 등록시에만 DB LOG 테이블에 남긴다.테스트 전 기본 코드아래는 기본 세팅 코드들이다.Log.java ( Log Entity)@Entity@Getter @Setterpublic class Log { @Id @GeneratedValue private Long id; private String message; public Log() { } public Log(String message) { this.message = message; }}..
스프링 트랜잭션 전파 - 1
·
Spring Transaction
기술스택JDK 17Spring Boot 3.3.5 먼저 들어가기 앞서 로그를 확인하기 위해 application.properties에 다음과 같은 코드를 추가를 하자. 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 #JPA SQL logging.leve..
[JDBC] 트랜잭션 이해
·
JDBC
기술스택Spring Boot 3.3.5Java 17H2 Database 1. 트랜잭션 개념 이해트랜잭션이란?데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. - 위키백과 데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까?가장 대표적인 이유는 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문이다.  트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 데이터 베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 즉, 데이터베이스에서 수행되는 일..
@Transactional을 선언해도 내부 메서드를 실행 시 ROLLBACK이 되지 않는 문제
·
Spring Framework
문제- @Transactional을 애노테이션을 선언해도 this를 통한 내부 메서드를 호출시 롤백이 되지 않았다.아래는 문제의 코드이다. 같은 클래스안에 INSERT할 수 있는 서로 다른 메서드를 생성 뒤이 두개의 INSERT 메서드를 this로 내부의 메서드들을 한번에 호출하는 메서드를 생성하였다.(참고로 insert1 메서드를 실행 시 'INSERT INTO BOOK VALUES ('18', 'TEST1', 'TEST_WRITER1', 100, 1)' 라는 SQL 쿼리가 실행 )insert2() 메서드는 예외를 던지고 allInsert() 메서드는 insert1()와 insert2() 내부 메서드를 한번에 호출하는 메서드다. 그 후 테스트 클래스를 생성뒤 한번에 Insert 하는 메서드 실행 아래의..