https://sundaland.tistory.com/420 [ ▶ Applying Query Hints ][ ▷ 쿼리 힌트 적용하기 ]JPA 쿼리 힌트를 적용하기 위해 @QueryHints 어노테이션을 사용할 수 있다. 이 어노테이션은 JPA의 @QueryHint 어노테이션 배열과 페이지네이션을 적용할 때 추가 카운트 쿼리에 적용할 힌트를 비활성화할 수 있는 불리언 플래그를 받는다. ▼ 쿼리 힌트 사용public interface UserRepository extends Repository { @QueryHints(value = { @QueryHint(name = "name", value = "value")}, forCounting = false) Page findByLast..
전체 글
https://sundaland.tistory.com/434 [ ▶ Auditing ] Spring Data JPA는 엔티티가 언제, 누구에 의해 생성되거나 수정되었는지를 투명하게 추적할 수 있도록 고급 지원을 제공합한다. 이를 위해 엔티티 클래스에 감사 메타데이터를 추가해야 하며, 이 메타데이터는 어노테이션을 사용하거나 인터페이스를 구현하여 정의할 수 있다. 또한 감사 기능을 활성화하려면 어노테이션 구성 또는 XML 구성을 통해 필요한 인프라 구성 요소를 등록해야 한다. [ ▷ Annotation-based Auditing Metadata ] Spring Data JPA에서는 @CreatedBy, @LastModifiedBy, @CreatedDate, @LastModifiedDate 어노테이션을 사용..
https://sundaland.tistory.com/137 [ ▶ Database Index ] 데이터베이스 인덱스는 대규모 데이터셋에서 성능을 최적화하기 위한 핵심적인 메커니즘으로, 테이블 내에서 특정 열 또는 열들의 조합에 대한 데이터 검색을 더 빠르게 수행할 수 있도록 돕는 데이터 구조다. 인덱스는 데이터를 미리 정렬된 구조로 유지해 두어, 테이블을 일일이 탐색하지 않고도 필요한 데이터를 효율적으로 찾을 수 있도록 해준다. 마치 책의 목차처럼, 특정 위치의 데이터를 빠르게 찾아가는 데 사용된다. [ ▷ 데이터베이스 인덱스의 개념과 역할 ]△ 인덱스란?인덱스는 특정 열 또는 여러 열의 조합에 대해 데이터를 빠르게 검색할 수 있도록 구성된 데이터베이스의 자료 구조다. 테이블 전체를 스캔하는 것보다..
https://sundaland.tistory.com/432 [ ▶ PESSIMISTIC_READ ] 비관적 읽기 잠금(Pessimistic Read Lock)은 데이터베이스에서 데이터의 일관성과 무결성을 보장하기 위해 사용되는 잠금 전략 중 하나이다. 이 잠금 방식은 다른 트랜잭션이 데이터를 수정할 수 없도록 하여 읽기 작업 중에 데이터의 변경을 방지한다. [ ▷ 비관적 읽기 잠금(Pessimistic Read Lock) ]동시성 제어: 여러 트랜잭션이 동시에 같은 데이터를 읽거나 쓸 수 있는 경우, 데이터의 일관성을 유지하기 위해 비관적 잠금을 사용합니다. 이 잠금 방식은 데이터의 무결성을 유지하기 위해 다른 트랜잭션의 수정 작업을 차단한다.데이터 충돌 예방: 데이터 변경이 발생할 가능성이 있는 ..
https://sundaland.tistory.com/433 [ ▶ LockModeType.OPTIMISTIC ] LockModeType.OPTIMISTIC은 데이터베이스에서 사용하는 비관적 잠금과 대조되는 낙관적 잠금 전략이다. 이 전략은 데이터의 동시성을 높이면서도 데이터의 무결성을 보장하기 위해 사용된다. [ ▶ OPTIMISTIC (낙관적 잠금) ]낙관적 잠금은 데이터에 대한 작업을 수행할 때, 다른 트랜잭션이 해당 데이터를 수정하지 않을 것이라고 가정하는 방식이다. 즉, 데이터의 변경을 시도할 때까지 잠금을 사용하지 않으며, 최종적으로 데이터베이스에 변경을 적용할 때 충돌 여부를 확인다.동시성 향상: 여러 트랜잭션이 동시에 같은 데이터에 접근할 수 있도록 하여 성능을 높인다.충돌 감지: 데이터의..
https://sundaland.tistory.com/431 [ ▶ Locking ]Locking은 데이터베이스에서 동시성을 관리하는 중요한 메커니즘으로, 여러 트랜잭션이 데이터에 접근할 때 데이터 무결성을 보장하기 위해 사용된다. Spring Data JPA에서는 @Lock 어노테이션을 사용하여 쿼리 메서드나 CRUD 메서드에 잠금 모드를 지정할 수 있다. [ ▷ 쿼리 메서드에서 Lock 모드 정의하기 ] 쿼리 메서드에 @Lock 어노테이션을 사용하여 사용할 잠금 모드를 지정할 수 있다. 예를 들어, LockModeType.READ를 사용하면 해당 쿼리가 읽기 전용 잠금으로 실행된다. 이렇게 하면 다른 트랜잭션에서 동일한 데이터에 대한 변경 작업을 할 수 없게 되어, 데이터 무결성이 유지된다. int..
https://sundaland.tistory.com/430 [ ▶ Transactionality ][ ▷ 디폴트 Transaction 설정 ] CrudRepository에서 상속받는 메서드들은 SimpleJpaRepository에서 기본적인 트랜잭션 설정을 상속받는다. 읽기 작업(read operation)의 경우 @Transactional 어노테이션의 readOnly 속성이 true로 설정돤다. 반면, 그 외의 작업들은 기본적인 @Transactional 설정이 적용된다. ▼ CrudRepository 기본 트랜잭션 설정public interface UserRepository extends CrudRepository { @Override @Transactional(timeout = 10)..
·자바
https://sundaland.tistory.com/133 [ ▶ record ] Java에서 record는 Java 14에서 미리보기 기능으로 도입되었고, Java 16에서 정식으로 추가된 기능이다. record는 불변(immutable) 데이터 클래스의 간단한 구현을 제공하는 새로운 타입이다. 주로 데이터 전송 객체(DTO)나 값을 캡슐화하는 데 사용된다. [ ▷ record의 특징 ]불변성: record로 정의된 클래스의 필드는 기본적으로 final로 선언되어, 객체 생성 후 수정할 수 없다.간단한 문법: record는 생성자, getter, equals(), hashCode(), toString() 메서드를 자동으로 생성한다. 이를 통해 보일러플레이트 코드를 줄이고 코드의 가독성을 높인다.자..