본문 바로가기
728x90

Transactional2

[JPA] JPA Lock의 개념과 사용 JPA(Java Persistence API)에서의 락(Lock)은 동시에 여러 사용자가 같은 데이터를 수정할 때 데이터 일관성을 유지하기 위한 메커니즘이다. 이를 통해 여러 트랜잭션이 동시에 동일한 데이터를 수정할 때 발생할 수 있는 문제를 해결할 수 있다. 즉 트랜잭션에 포함되어 있는 개념이라고 할 수 있다. 이와 같이 하나의 Transaction이 특정 데이터에 접근하게 되면 해당 데이터에 대한 연산작업을 진행하는 동안 LOCK을 걸어 다른 트랜잭션에서 접근하지 못하게 한다. Optimistic Lock (낙관적 락): 낙관적 락은 데이터를 읽을 때 락을 걸지 않고, 데이터를 업데이트할 때 버전 번호 등을 체크하여 충돌이 발생하지 않도록 하는 방식이다. 버전 관리를 위한 필드에 @Version 어노.. 2023. 9. 11.
[JPA] 주요 개념 트랜잭션(Transaction) 데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 한다. 즉 데이터를 추가, 수정, 삭제 시킬 때 바로 DB에 반영 하지 않고 영속성 캐시에 담아뒀다 한번에 반영 하게 된다. UPDATE JPA는 Update 메서드를 따로 제공하고 있지 않다. 그렇기에 Service로직에 @Transactional 어노테이션을 붙이고, Entity데이터를 조회 후 set() 하여 Entity의 데이터를 수정만 하면 데이터베이스에 대한 연산?작업이 끝날 때 @Transactional 어노테이션에 의해 Entity의 .. 2023. 9. 10.
728x90