자바웹프로그래밍/JPA
-
비관적 락(Pessimistic Lock)과 낙관적 락(Optimistic Lock) 차이 with JPA자바웹프로그래밍/JPA 2024. 12. 18. 16:07
1. 비관적 락(Pessimistic Lock)특징:데이터에 대한 충돌이 빈번할 것으로 예상될 때 사용하는 방법.데이터가 다른 트랜잭션에 의해 변경되지 않도록 **락(Lock)**을 이용해 강제적으로 제어.데이터에 접근하려는 시점에 바로 락을 걸어서 다른 트랜잭션이 데이터를 읽거나 수정하지 못하게 한다.데이터의 일관성을 보장하지만, 성능에 영향을 줄 수 있음.장점:데이터 충돌 가능성을 완벽히 방지.데이터의 신뢰성이 중요하거나 다수의 사용자 간 충돌이 예상될 때 적합.단점:락을 사용하기 때문에 성능이 저하될 가능성이 있음.데드락(Deadlock) 상황이 발생할 수 있음.JPA에서의 사용: JPA에서는 @Lock 어노테이션과 엔티티 매니저의 lock() 메서드를 통해 비관적 락을 구현합니다. @Lock(Lo..
-
JPA - 영속성 컨텍스트 ?자바웹프로그래밍/JPA 2023. 9. 12. 23:22
영속성 컨텍스트 - 엔터티를 영구 저장하는 환경이다. 예) entitymanager.persist(member) - 와 같은 엔터티매니저 persist 메소드를 사용하면 영속성 컨텍스트에 attach된다. 엔터티에는 생명주기가 있으며 다음과같이 4가지가 있다 비영속 : 영속성 컨텍스트와 상관이없다. (영속성 컨텍스트에 attach되어있지 않다.) 영속 : 영속성 컨텍스트에 저장된 상태이다. 준영속 : 영속성 컨텍스트에 저장되어있다 특정 메소드를 통해 분리된 상태이다. 삭제 : 영속성 컨텍스트에서 삭제된 상태이다. jpa에선 영속성 컨텍스트를 관리하는데 왜 이런식으로 관리하는가? 영속성 컨텍스트로 엔터티를 관리시 장점은 아래와같이 5가지가 있다 1. 영속성 컨텍스트(메모리)에서 가져와 빠르게 조회할수있다...