본문 바로가기
반응형

스프링/JPA14

Querydsl Querydsl을 사용하는 이유 쿼리를 자바코드로 -> 컴파일시점에 오류 동적쿼리 쉬움 쿼리와 유사한 코드 build.gradle plugins 추가 dependencied 추가 Querydsl 빌드 설정 추가 plugins { ... //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" ... } dependencies { ... //querydsl 추가 implementation 'com.querydsl:querydsl-jpa' ... } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir =.. 2021. 8. 24.
Spring-Data-Jpa 참고: 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행하므로 좀 더 빨라진다. Preferences Build, Execution, Deployment Build Tools Gradle Build and run using: Gradle -> IntelliJ IDEA Run tests using: Gradle -> IntelliJ IDEA 롬복 적용 Preferences - plugin - lombok 검색 실행 (재시작) Preferences - Annotation Processors 검색 - Enable annotation processing 체크 (재시작) 임의의 테스트 클래스를 만들고 @Getter,.. 2021. 8. 6.
Envers / spring-data-envers 개요 Envers 모듈은 Hibernate 및 JPA와 함께 작동하는 핵심 Hibernate 모델입니다. Envers 모듈은 엔티티 클래스를위한 쉬운 감사 / 버전 관리 솔루션을 제공하는 것을 목표로합니다. 하이버네이트 핵심 모듈 JPA 스펙에 정의된 모든 매핑 감사 엔티티의 변경 이력을 자동 관리 트랜잭션 단위의 통합 Revision 관리 (Snapshot) REVINFO 테이블은 revision_id 와 Timestamp만 가지고 있고, 이력 테이블은 별도로 존재함. 한 트랜잭션 내에서 발생한 변경사항을 revision_id 1이라는 이력으로 여러 이력테이블에 각각 저장, revision_id 1인 항목의 해당 트랜잭션에서 변경된 모든 이력을 감사(audit)가능함 의존성 implementation(.. 2021. 8. 3.
JPA 최적화, Hint 쿼리 최적화를 위한 SQL힌트는 JPA에서 제공하고 있지 않다. 따라서 NativeQuery를 사용. JPA 쿼리 힌트는 SQL 힌트가 아닌 JPA 구현체에게 제공하는 힌트로, 기본적으로 JPA가 변경감지에 의해 update 쿼리를 날릴려면 원본을 캐시에 저장하고 관리하는 entity 객체 또한 따로 갖고 있는다. 하여 이를 위해 영속성 컨텍스트는 항상 원본(스냅샷)과 관리하는 사본 객체 두 객체를 메모리에 저장하게 된다. 이게 성능 이슈가 될 수도 있다. 읽기만 할 때는 필요없기 때문에 같은 엔티티 객체를 두 개를 갖는 것은 메모리 비용을 허비할 수가 있다. 그래서 JPA Hint를 통해 읽기 전용이라고 알려주고 캐시에 원본(스냅샷)을 저장하지 않도록 하여 공간 비용을 최적화할 수 있다. @QueryH.. 2021. 6. 4.
728x90
반응형