트랜잭션

Database

[Database / SQLD] 데이터 모델과 SQL _ 정규화, 반정규화, 트랜잭션 (Part1 - Ch02)

SQLD를 준비하며 개인적으로 조금 외워두면 좋을 것 같은 것들만 적어보았습니다.참고한 책은 "2024 유선배 SQL개발자(SQLD) 과외노트"입니다.01 정규화(Normalization)정규화란?<p data-ke-size="size16..

Database/데이터베이스 이론

[Database] 트랜잭션의 격리성 문제 - Dirty Read / Non-Repeatable Read / Phantom Read

트랜잭션? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 트랜잭션에 대해 모르신다면 아래 글을 읽어보시길 바랍니다. 📁[Database] 트랜잭션의 동작 원리와 ACID 속성 트랜잭션 격리성 ( Transaction Isolation ) 트랜잭션의 격리성은 트랜잭션의 여러 특징들 중 하나이다. 격리성은 실행 중인 트랜잭션의 중간에 다른 트랜잭션이 접근할 수 없도록 하는 것을 뜻한다. 이런 격리성의 수준을 조절할 수..

Database/데이터 접근 기술

[Java, Spring] 트랜잭션을 적용하는 여러 가지 방법

[JDBC] 트랜잭션 적용 - Connection 직접 이용 JDBC 코드를 직접 짤 때 트랜잭션을 이용하는 방법이다. 비즈니스 로직을 실행할 때, 하나의 커넥션 내에서 동작해야 하므로 메서드 사용 시 connection을 파라미터로 넘겨야 한다. 따라서 서비스 계층, 데이터접근 계층에 모두 Connection을 파라미터로 받아서 이용해야 한다. public void loadLotsOfData(DataList dataList) { String sql = "insert into table values ( /* ... */)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.pr..

Database/데이터베이스 이론

[DataBase] 트랜잭션 - 락(Lock) 동작 원리와 동작 과정

DB Lock (락) DB Lock(락)은 하나의 데이터를 다른 세션에서 수정하는 것을 방지하는 것이다. 만약 세션 A에서 데이터를 수정하기 위해 트랜잭션을 진행 중이고 아직 커밋 또는 롤백을 수행하지 않았는데, 다른 세션 B에서 동시에 같은 데이터를 수정하게 된다면 여러 가지 문제가 발생할 것이다. 트랜잭션의 원자성이 깨지는 것이다. DB Lock은 이런 문제를 방지하기 위해 트랜잭션을 시작하고 해당 트랜잭션(세션)이 종료되기 전까지 다른 세션에서 해당 데이터를 수정할 수 없도록 막아주는 역할을 한다. 락을 고려한 트랜잭션 과정 락(Lock)은 해당 데이터 수정에 대한 권한 같은 것으로 생각하면 된다. 트랜잭션을 시작하고 쿼리를 실행함과 동시에 락을 획득한다. 획득한 락은 트랜잭션 종료(커밋/롤백) 시..

Database/데이터베이스 이론

[Database] 트랜잭션의 동작 원리와 ACID 속성

트랜잭션(Transaction)이란? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 데이터베이스에 정상적으로 반영하는 것을 커밋(Commit) , 되돌리는 것을 롤백(Rollback)이라고 한다. 트랜잭션 ACID 속성 ACID는 트랜잭션을 정의하는 4가지 중대한 속성을 가리키는 약어입니다. 즉 원자성, 일관성, 신뢰성, 격리 그리고 영속성을 의미합니다. 원자성(Atomicity) 트랜잭션 내에서 실행한 작업들은 ..

Spring/Spring Boot

[Spring / Transaction] 트랜잭션 실제 적용되고 있는지 확인하는 방법

스프링 프레임워크를 이용하여 트랜잭션을 적용할 때는 @Transactional 애노테이션을 통해 선언적 트랜잭션 방식을 사용한다. 그런데 이 기능은 매우 편리하게 트랜잭션 관련 코드를 대체해 주지만, 실제로 트랜잭션 관련 코드가 눈에 보이지 않고 AOP를 기반으로 동작하기 때문에 실제 트랜잭션이 적용되고 있는지 확인하기 어렵다. 이때, 트랜잭션이 TransactionSynchronizationManager 라는 클래스를 활용하여 확인할 수 있다. 트랜잭션 적용 확인 import org.springframework.transaction.support.TransactionSynchronizationManager; 위의 패키지의 TransactionSynchronizationManager가 제공하는 메서드를 ..

HSRyuuu
'트랜잭션' 태그의 글 목록