jpa 3

[Spring] JPA Auditing 기술을 사용하여 생성일자, 수정일자 컬럼의 데이터 형식을 깔끔하게 지정하는법

JPA Auditing 기술은 엔티티를 생성 및 변경할 때, 생성시간, 수정시간 등을 자동으로 삽입해 주는 기능입니다. Audit은 감사하다, 추적하다의 의미를 지니는데, Auditing 기술을 이용하면 마지막에 데이터를 생성 및 수정한 사람과 시간을 추적할 수 있게 됩니다. 우선, Auditing 기술을 사용하게 위해, SpringApplication.class에 다음과 같은 어노테이션을 지정해줘야 합니다. @EnableJpaAuditing public class ExerciseApplication { public static void main(String[] args) { SpringApplication.run(ExerciseApplication.class, args); } } 다음으로 생성시간, 수..

Java/Spring 2023.11.24

[Spring] 동시성 이슈 및 해결 방안

동시성 두 개 이상의 세션이 공통된 자원에 대해 읽고 쓰는 작업을 하는 경우, 발생할 수 있는 문제 동시성 문제의 2가지 현상 일관성 없는 읽기 세션 2는 동시에 실행되고 있는 세션 1 때문에, 데이터에 접근하는 시점마다 다른 값을 읽게 됩니다. 이러한 문제는 “불변성”, 복사본을 이용하여 해결, 세션2가 최초로 데이터를 조회하는 경우, 해당 데이터를 복사하고 이후에도 계속 사용하는 것입니다. 하지만, JPA에서는 영속성 컨텍스트에 데이터를 1차 캐시에 캐싱하기 때문에, 일관성 없는읽기에 대한 문제는 없습니다. 갱신 손실 세션2에 의해 세션 1의 변경 사항이 무시되는 현상 이러한 동시성 문제를 해결하기 위한 방안 Optimistic Lock(낙관적 락) 자원에 Lock을 걸지 않고 충돌이 발생했을 때, ..

Java/Spring 2023.09.12

[Spring] Spring Data JPA 공통 인터페이스

구조적으로 JpaRepository는 공통 CRUD기능을 제공하고 있습니다. 그래서 생성한 Repository 인터페이스를 통해 기본적인 CRUD 기능을 구현하지 않아도 사용할 수 있습니다. 이제 공통 인터페이스에 대해 알아보겠습니다. JpaRepository 공통 기능 인터페이스 public interface JpaRepository extends PagingAndSortingRepository JpaRepository를 사용하는 인터페이스 public interface MemberRepository extends JpaRepository { } @Repository 어노테이션을 생략할 수 있는 이유는 Spring Data JPA가 자동으로 컴포넌트 스캔을 처리하고, JPA 관련 예외도 처리해 주기 때..

Java/Spring 2023.03.18