[JPA] 영속성 컨텍스트(Persistence Context) 내부 구조 살펴보기
·
Programming/Spring,JPA
StatefulPersistenceContextPersistenceContext 인터페이스의 구현체로 이 구현은 영속성 컨텍스트가 해당 세션의 생명 주기 동안 엔티티의 상태를 유지하고 관리한다.  HashMap 구조영속성 컨텍스트의 1차 캐시는 HashMap 구조이다. 1차 캐시에 관한 그림을 살펴보면 엔티티의 식별자를 Key로 사용한다고 알려져있다.  StatefulPersistenceContext 클래스 StatefulPersistenceContext 클래스를 살펴보면, Key 값으로 EntityKey 객체를 사용하고 있다. 해당 객체 안에 식별자가 존재할것으로 추측할 수 있다.  EntityKey 클래스public final class EntityKey implements Serializable {..
[JPA] Hibernate 내부 동작을 알고 계신가요?(save 안티패턴 고찰)
·
Programming/Spring,JPA
서론프로젝트 초기에는 JDBC Template을 사용해 데이터베이스와의 연동 작업을 진행했다. 하지만 객체지향적 언어로 도메인을 구성하며 프로그래밍을 하던 중, 객체와 데이터베이스 간의 연결 방법에 대한 고민이 생겼다. 객체지향 설계와 관계형 데이터베이스 사이의 패러다임 불일치로 인해 코드가 복잡해지는 문제를 겪었다.  이러한 문제를 해결하기 위해 ORM(Object-Relational Mapping) 기술인 JPA를 도입하게 되었고, 이를 통해 객체와 데이터베이스 간의 매핑을 더 자연스럽게 처리하고자 했다. JPA는 Java Persistence API의 약자로, 자바 ORM 기술에 대한 표준 API 명세를 의미한다. JPA는 여러 인터페이스로 구성되어 있으며, 이 인터페이스들을 구현한 대표적인 프레임..