JPA2 [ JPA ] 모임 동시 참가 낙관적 / 비관적 락 적용 🌱 [ 문제 상황 ]- 모임은 최대 수용 인원(capacity) 존재 합니다.- 만약 여러 회원이 동시에 모임에 참가 한다면 동시성 문제가 발생할 수 있습니다.- 동시성 문제를 어떻게 해결할 수 있을까요?🌱 [ 해결 방안 ] 낙관적 락- 락을 걸지 않고 어플리케이션에서 해결 하는 방법- 두번의 갱신 분실 문제에 대해서 첫번째 수정만을 인정 합니다. [ 낙관적 락은 어떻게 동작 할까요? ] 1. 낙관적 락은 @Version 어노테이션을 엔티티에 적용 합니다.2. 엔티티가 업데이트 될 경우 version을 증가 시킵니다.3. 트랜잭션이 종료 될때, 자신이 읽어온 버전과 같은지 Update SQL을 통해 확인 합니다.- 그림에서는 트랜잭션 A가 먼저 수행 하였으므로 트랜잭션 A만 커밋이 됩니다.[ 낙관적.. 2025. 2. 16. [JPA] 영속성 컨텍스트(entityManager) 💡 영속성 컨텍스트란? '엔티티를 영구 저장 하는 환경' 이라는 의미 입니다.엔티티 매니저로 엔티티를 저장하거나 조회하면 영속성 컨텍스트에 엔티티를 저장하고 관리합니다. 🙄 영속성 컨텍스트 사용 이점1차 캐시 동일성 보장 트랙잭션을 지원 하는 쓰기 지연 변경 감지 지연 로딩 📝 1차 캐시 1차 캐시 등록된 entity 조회 시 :DB에서 가져 오는 것이 아닌 1차 캐시에서 가져 옵니다.-> DB 접근 횟수가 적습니다. 트랜잭션의 flush() 호출 시 :현재 객체의 상태와 비교 하여 다른 부분을 체크 하여 SQL을 작성합니다. -> 객체의 상태가 변경 될때 SQL을 작성 하지 않아도 됩니다. (변경 감지) (1차 캐시는 처음 영속 상태가 된 entity의 스냅샷을 가지고 있습니다.) 📝 동일성 .. 2024. 5. 14. 이전 1 다음