JPA 영속성 컨텍스트
영속성 컨텍스트의 개념과 역사 영속성 컨텍스트(Persistence Context)는 엔티티를 영구 저장하는 환경으로서, 애플리케이션과 데이터베이스 사이에서 엔티티의 생명주기를 관리하고 다양한 최적화 기능을 제공하는 JPA의 핵심 개념이며, 이 개념은 2001년 Gavin King이 Hibernate를 개발할 때 Session이라는 이름으로 처음 도입되었다. Hibernate의 Session은 데이터베이스 연결을 추상화하고, 엔티티 객체의 상태를 추적하며, 트랜잭션 내에서 일관된 데이터 뷰를 제공하는 역할을 했는데, 2006년 JPA 1.0이 Hibernate를 표준화하면서 이 개념이 영속성 컨텍스트와 EntityManager라는 이름으로 재정립되었다. 영속성 컨텍스트가 해결하는 핵심 문제는 객체지향 애플리케이션에서 데이터베이스 작업의 복잡성을 숨기고, 개발자가 객체 중심으로 비즈니스 로직에 집중할 수 있게 하는 것으로, 매번 데이터베이스에 직접 쿼리하는 대신 영속성 컨텍스트라는 중간 계층을 두어 캐싱, 변경 추적, 지연 쓰기 등의 최적화를 자동으로 처리한다. 영속성 컨텍스트는 Martin Fowler가 정의한 Unit of Work 패턴과 Identity Map 패턴을 구현한 것으로, 비즈니스 트랜잭션 동안 변경된 객체를 추적하여 트랜잭션 종료 시 한꺼번에 데이터베이스에 반영하고, 동일한 식별자를 가진 엔티티는 항상 같은 객체 인스턴스를 반환하여 일관성을 보장한다. ...