2025/04/26 3

[자바 ORM 표준 JPA 프로그래밍] 16. 트랜잭션과 락, 2차 캐시

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 트랜잭션과 락NON-REPEATABLE READ사용자 A, B가 동시에 같은 데이터를 수정 → 나중에 저장한 B의 값만 반영되어 A의 수정사항이 유실됨.트랜잭션만으로는 해결 불가능 (트랜잭션 범위를 넘어선 문제)해결 방법설명구현 방식마지막 커밋만 인정마지막에 커밋한 트랜잭션의 값이 저장됨(이전 변경 내용이 덮어씌워짐)버전 관리 없이 단순히 UPDATE 수행최초 커밋만 인정먼저 커밋한 트랜잭션만 인정이후 커밋은 버전 불일치로 예외 발생JPA 낙관적 락 적용 (@Version)충돌 내용 병합동시에 수정된 데이터를 병합하여 둘 다 반영OptimisticLockException 발생 시 직접 예외 처리 낙관적 락과 비관적 락구분..

[자바 ORM 표준 JPA 프로그래밍] 15. 고급 주제와 성능 최적화

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 예외 처리JPA 예외 변환서비스 계층이 JPA 구현 기술에 의존하지 않게 하기 위해 예외를 추상화항목설명기능 제공 클래스PersistenceExceptionTranslationPostProcessor적용 방식@Repository가 붙은 클래스를 대상으로 AOP 적용JPA 예외를 스프링 예외로 변환 (DataAccessException 등) JPA 표준 예외PersistenceException (RuntimeException 하위 클래스)구분설명롤백 필수(심각한 예외)예외 복구 시, 커밋 ❌- EntityExistsException: 엔티티 영속화 시도 중, 이미 같은 엔티티가 있음- EntityNotFoundExcepti..

[자바 ORM 표준 JPA 프로그래밍] 13. 웹 애플리케이션과 영속성 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 트랜잭션 범위의 영속성 컨텍스트기본 전략구분내용생명 주기트랜잭션과 영속성 컨텍스트는 같은 생존 범위를 가짐- 트랜잭션이 시작될 때 영속성 컨텍스트 생성 (초기화 상태)- 트랜잭션이 종료될 때 영속성 컨텍스트 종료공유- 같은 트랜잭션 간 같은 영속성 컨텍스트를 공유함- 다른 트랜잭션 간 다른 영속성 컨텍스트를 가짐 예시) 공유더보기같은 트랜잭션@Test@Transactionalvoid same_transaction() { User user1 = entityManager.find(User.class, 1); user1.setName("test"); searchName();}private void search..