#JPA
총 7편
MySQL 8 에서 격리 수준을 올려도 Lost Update는 막히지 않았습니다
재고 100개에 주문 120건을 동시에 넣고 격리 수준 3가지와 비관적 락, 조건부 UPDATE, 낙관적 락을 5회씩 돌려 본 기록입니다.
주문 상태 전이와 비관적 락
주문 단계 검증을 엔티티 안으로 옮긴 과정과, 비관적 락을 걸고도 영속성 컨텍스트의 낡은 재고 값으로 차감된 원인을 정리했습니다.
실무에서 바로 쓰는 JPA (5편) - 실무 안티패턴 총정리
실무에서 자주 저지르는 JPA 실수 7가지를 정리했습니다. N+1 무시, 영속성 컨텍스트 오남용, 벌크 연산 후 flush 누락 등 — 코드 예시와 수정 방법을 함께 담았습니다.
실무에 서 바로 쓰는 JPA (4편) - 엔티티 설계 마스터하기
양방향 연관관계 남발·cascade 무분별 사용·setter 도배. 엔티티 설계부터 고쳐야 N+1도 잡힌다. 단방향 우선·cascade 최소화·Builder 패턴으로 변경 경계를 제한한 엔티티 설계하는 실무 기준.
실무에서 바로 쓰는 JPA (3편) - 쿼리 최적화 실전
JPQL, QueryDSL, Native Query — 언제 뭘 써야 하는지 성능 측정 결과와 함께 정리합니다. 슬로우 쿼리를 발견했을 때 단계별로 최적화하는 방법도 다룹니다.
실무에서 바로 쓰는 JPA (2편) - 영속성 컨텍스트와 흔한 실수들
영속성 컨텍스트를 모르면 JPA는 시한폭탄이다. OSIV 함정, detached 객체 수정, 벌크 연산 후 flush 누락까지. N+1이 아닌 곳에서 성능을 잡아먹는 흔한 실수 모음.
실무에서 바로 쓰는 JPA (1편) - N+1 문제 해결
JPA N+1 문제를 실무에서 마주치면 어떻게 해결할까요? Fetch Join, EntityGraph, Batch Size 세 가지 방법을 성능 측정 결과와 함께 비교하고, 상황별로 어떤 방법을 선택해야 하는지 정리합니다.