트랜잭션: 4개의 글
트랜잭션의 전파 설정이란 Spring에서 사용하는 어노테이션 '@Transactional'은 해당 메서드를 하나의 트랜잭션 안에서 진행할 수 있도록 만들어주는 역할을 합니다. 이때 트랜잭션 내부에서 트랜잭션을 또 호출한다면 스프링에서는 어떻게 처리하고 있을까요? 새로운 트랜잭션이 생성될 수도 있고, 이미 트랜잭션이 있다면 부모 트랜잭션에 합류할 수도 있을 것입니다. 진행되고 있는 트랜잭션에서 다른 트랜잭션이 호출될 때 어떻게 처리할지 정하는 것을 '트랜잭션의 전파 설정'이라고 부릅니다. 전파 설정 옵션 트랜잭션의 전파 설정은 '@Transactional'의 옵션 'propagation'을 통해 설정할 수 있습니다. 각 옵션은 아래와 같습니다. REQUIRED (기본값) 부모 트랜잭션이 존재한다면 부모 트..
트랜잭션 트랜잭션이란 더 이상 쪼갤 수 없는 최소 단위의 작업을 뜻하는 개념이다. 트랜잭션 경계 안에서 진행된 작업은 commit() 을 통해 모두 성공하던지, 아니면 rollback()을 통해 모두 취소돼야 한다. 하지만 트랜잭션이라고 모두 같은 방식으로 동작하는 것은 아니다. 이 밖에도 트랜잭션의 동작방식을 제어할 수 있는 몇 가지 조건이 있다. 트랜잭션 전파 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 예를들어 A 라는 트랜잭션이 시작되고, 아직 끝나지 않은 시점에서 B 라는 트랜잭션안에 있는 메소드를 호출한다면 B는 어떤 트랜잭션에서 동작해야 할까? 자신을 호출한 A 트랜잭션에서 동작해야 할까, 아니면 자신의..
엔티티 매니저 JPA의 기능 대부분을 EntityManager가 제공하고 있습니다. 엔티티 매니저를 통해 데이터베이스의 기본 동작인 CRUD(Create, Read, Update, Delete)를 제공합니다. 엔티티 매니저는 다음과 같은 형태로 선언해 사용합니다. // Use persistence.xml configuration EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1") EntityManager em = emf.createEntityManager(); // Retrieve an application managed entity manager // Work with the EM em.close(); ... emf..
트랜잭션 격리 레벨 (Isolation Level) 격리 레벨 (Isolation Level)상세 설명TransactionDefinition. ISOLATION_DEFAULT -1 : 개별적인 PlatformTransactionManager를 위한 디폴트 격리 레벨TransactionDefinition. ISOLATION_READ_UNCOMMITTED 1 : 격리 레벨 중 가장 낮은 격리 레벨이다. 이 격리 레벨은 다른 Commit 되지 않은 트랜잭션에 의해 변경된 데이터를 볼 수 있기 때문에 거의 트랜잭션의 기능을 수행하지 않는다.TransactionDefinition. ISOLATION_READ_COMMITTED 2 : 대 개의 데이터베이스에서의 디폴트로 지원하는 격리 레벨이다. 이 격리 레벨은 다른..