본문 바로가기

JPA38

Jpa 1차, 2차 캐시 Jpa 1차, 2차 캐시 1차 캐시 Jpa 에서 1차 캐시는 영속성 컨텍스트 내부에 엔티티를 보관하는 저장소입니다. 1차 캐시 동작 방식 (데이터가 1차 캐시에 없을 때) 최초 조회 시, 엔티티가 없으므로 DB 데이터를 조회합니다. DB 에서 조회해온 데이터를 영속성 컨텍스트 내부 저장소에 (1차 캐시) 보관합니다. 1차 캐시에 있는 데이터를 반환합니다. 1차 캐시 동작 방식 (데이터가 1차 캐시에 있을 때) 1차 캐시 (영속성 컨텍스트) 에 데이터가 있으므로 데이터를 반환합니다. (DB 를 조회하지 않습니다.) 1차 캐시 특징 1차 캐시는 객체의 동일성을 보장합니다. (객체끼리 비교했을 때, 같습니다. 객체 1 == 객체 2) OSIV (Open Session In View) 를 사용한다면 서버에서 응.. 2022. 2. 9.
jpa @ElementCollection 정리 source 는 Github 에 있습니다. @ElementCollection 정리 JPA 는 ORM 이고 ORM 은 Object Releation Mapping 의 약자입니다. RDB 의 경우 데이터를 저장할 때, collection 단위로 저장할 수 있는 방법이 없습니다. 예를 들면, Member 라는 테이블에 phone_number 가 여러개 들어갈 수 없습니다. JPA 에서는 @ElementCollection 을 이용해서 Collection 대상인 것을 알려줄 수 있습니다. source 및 로그 Member Entity 아래와 같이 Member Entity 에 roles collection 을 만들어주고 ElementCollection 을 선언해주면 Roles 테이블이 만들어집니다. @Entity .. 2022. 1. 17.
spring data jpa 에서 데이터 생성일, 수정일 자동 생성 source 는 Github 에 있습니다. spring data jpa 에서 데이터 생성일, 수정일 자동 생성 spring data jpa 에서 데이터 생성일, 수정일 자동 생성에 대해서 정리했습니다. 데이터를 생성하거나 변경할 떄, 매번 컬럼을 생성하고 세팅할 필요 없이 자동으로 하는 방법입니다. 사용방법 @EnableJpaAuditing Application 에 @EnableJpaAuditing 를 붙여줘야 합니다. Jpa Auditing 를 활성화시키는 annotation 입니다. spring data jpa 에서 audit 은 시간을 자동으로 넣어주는 기능입니다. @EnableJpaAuditing @SpringBootApplication public class JpaExampleApplicatio.. 2021. 12. 29.
spring-boot, jpa, h2 환경에서 select for update (lock) 사용 방법 정리 source 는 Github 에 있습니다. spring boot h2 환경에서 jpa 명시적 락 사용하는 예제 spring boot h2 환경에서 select for update 를 사용하는 방법에 대해 정리했습니다. 결론부터 얘기하면 repository interface 에 메소드에 @Lock(LockModeType.PESSIMISTIC_WRITE) 선언하면 select for update 가 설정 됩니다. 예제에 대해 간략하게 설명하면 deposit(입금), withdraw(인출) 기능이 있으며, 여러 요청이 들어왔을 때, 동시성이 보장되는지 확인합니다. package com.example.jpa.api; import com.example.jpa.dto.BankAccountRequest; import.. 2021. 12. 21.