반응형 [개발] 프레임워크49 QueryDSL, MyBatis, JdbcTemplate 타입 안정성 QueryDSL의 타입 안정성Querydsl의 핵심 원칙은 타입 안정성(Type safety) 이다. 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성하게 된다. 또한, 완전히 타입에 안전한 방법으로 함수/메서드 호출이 이루어진다. QueryDSL은 개발자가 직접 SQL문을 작성하지 않고, Java 코드 기반의 빌더 API를 사용하여 타입 안전한 쿼리를 작성할 수 있도록 도와주는 프레임워크입니다. QClass는 정적 타입 기반으로 생성된 클래스로, 컴파일 시점에 타입 안정성을 보장하며, 쿼리 작성 과정에서 발생할 수 있는 오류를 최소화합니다. 또한 QClass는 엔티티 클래스에서 생성되며, 엔티티와 데이터베이스의 컬럼 이름을 기반으로 쿼리를 작성하기 때문에, 매핑할 프로퍼티 불일.. 2024. 12. 2. [JPA] @BatchSize와 쿼리 캐시에 관해서 알아보기 Spring Boot 1.4.6.RELEASE 버전에서 개발을 진행하고 있었습니다.album과 song이라는 테이블이 있고 song은 외래키를 가지고 있는 주 테이블이며 album은 대상 테이블입니다. 아래는 클래스 코드입니다.@Data@Entitypublic class Album { ... @OneToMany(mappedBy = "album") private List songList = new ArrayList(); ... }@Data@Entitypublic class Song { ... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "album_id", referencedColumnName = "id") .. 2024. 11. 28. JPA 2차 캐시와 레디스 캐시에 대하여 생각해보기 JPA 1차 캐시와 2차 캐시에 관해서는 이 글을 읽기 전에 한 번 읽어보시길 추천드립니다. 클라이언트의 요청에 의해 영속성 컨텍스트의 스냅샷을 통한 1차 캐시는 그 생명주기가 OSIV인 경우 요청이 끝날 경우에 사라집니다.(OSIV가 아닌 경우 트랜잭션이 종료되면 영속성 컨텍스트가 종료될 때 같이 사라집니다.)그렇다면 매번 반복된 요청이 들어올 때 불필요한 디비 컨넥션 처리가 이루어지지 않도록 2차 캐시를 이용하여 효율성을 높이는 것이 좋다고 생각이 됩니다. 2차 캐시를 적용해서 한번 로직을 구성해 보겠습니다.@Overridepublic List findByTop100Song() { return jpaQueryFactory.selectFrom(song) .where(song.i.. 2024. 11. 21. QueryDSL 셋팅 시 발생하는 에러 개선 프로젝트 스펙은 다음과 같았습니다.jdk 17spring boot 2.7.18 QueryDSL 의존성은 다음과 같이 추가했습니다.implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" 이 상황에서 빌드를 수행하니 다음과 같은 에러가 발생했습니다.Execution failed for task ':compileJava'. > ja.. 2024. 11. 14. 이전 1 2 3 4 5 ··· 13 다음 반응형