[JPA]SpringDataJPA 공통 필드 BaseEntity로 관리하기, Auditing으로 시간관리하기
·
JPA
다양한 엔티티를 생성하여 사용하다 보면 엔티티 생성마다 중복되는 필드(id, createdAt, updatedAt 등)를 반복적으로 계속 생성해 줘야 하는 걸까?라는 의문이 들곤 합니다.이번 포스팅에서는 엔티티 생성시 중복되는 필드를 BaseEntity를 활용하여 관리하는 방법에 대해 알아보겠습니다.BaseEntity 생성@Getter@MappedSuperclasspublic class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @CreationTimestamp @Column(name = "created_at", nullable = false, updatable = f..
[JPA] JPA 영속성 컨텍스트란? 영속성 컨텍스트 개념과 이점
·
JPA
영속성 컨텍스트영속성 컨텍스트란?엔티티를 영구적으로 저장하는 환경, JPA를 이해하는데 가장 중요한 용어이다.EntityManager.persist(entity) → DB에 저장하는 게 아닌 엔티티를 영속성 컨텍스트에 저장DB저장은 트랜잭션(Transaction)에서 커밋(commit) 시점에 저장된다.영속성 컨텍스트는 논리적 개념이며 눈에 보지 않는다. → 엔티티매니저를 통하여 영속성 컨텍스트에 접근 비영속 (new / transient)영속성 컨텍스트와 전혀 관계없는 새로운 상태// 객체를 생성한 상태 (비영속) JPA와 전혀 관계없는 상태Member member = new Member();member.setid("member1");member.setname("오팔봉");영속상태가 아니므로 영속성 컨..
[JPA] JPA 1차 캐시란? 1차 캐시의 동작원리
·
JPA
1차 캐시란?영속성 컨텍스트 내부에는 엔티티(Entity)를 보관하는 저장소가 있는데 이것을 1차 캐시라고 한다.엔티티 정보를 키 벨류 값으로 가지고 있어 DB에 접근하는 횟수를 줄여 성능상의 이점을 가져온다.엔티티매니저(EntityManager)로 변경, 조회하는 모든 엔티티는 1차 캐시에 저장되며 트랜잭션이 커밋되는 시점에 데이터베이스와 동기화된다. (비교는 PK로 한다.) 좀 더 자세히 동작하는 원리에 대해서 알아보자1차 캐시 동작원리  find를 했을 때 해당 엔티티가 영속성 컨텍스트의 1차 캐시에 존재하고 있을 경우DB조회를 거치지 않고 1차 캐시에 저장되어 있는 엔티티를 반환한다.  find를 했을 때 해당 엔티티가 영속성 컨텍스트의 1차 캐시에 존재하지 않을 경우DB를 조회하고 조회한 엔티티..