최신자바 백엔드 기술 Spring JPA쿼리를 자바 코드로 작성하고 문법 오류를 컴파일 시점에 잡아준다쿼리는 자바 코드로 작성하기 때문에 컴파일 시점에 에러를 잡아줌예를 들어 m과 where절 사이의 공백이 없기 때문에 에러가 발생하나 알 수 없다자바 코드 자동완성을
Q는 엔티티마다 자동으로 생성해 준다.Gradle -> tasks -> other -> compileQuerydsl 실행하면 build -> generated -> querydsl -> 팩토리에 Q가 생성된다JPAQueryFactory 생성합니다: EntityManag
Q 타입을 생성하여 사용하는 방법은 2가지가 있다querydsl은 결국 JPQL의 빌더이다.별칭을 직접 지정: QMember qMember = new QMember("m"); 기본 인스턴스 사용: QMember qMember = QMember.member;static
검색 조건 > 검색조건은 .and(),.or()를메서드체인으로연결할수있다. 📌참고: select , from 을 selectFrom 으로 합칠 수 있음 member.username.eq("member1") // username = 'member1' member.u
select, 조건절(where), order by에서 사용 가능가급적이면 계산하는 로직은 DB에서가 아닌 애플리케이션에서 계산하도록 하는 것이 좋다DB는 데이터를 적재하고 그룹핑, 조회하는 목적에서 사용하고계산하는 로직은 애플리케이션에서 하는 것이 좋다상수가 필요하면
프로젝션: select 절에 어떤것을 조회할 것인지 대상을 지정하는 것프로젝션 대상이 하나면 리턴 타입을 명확하게 지정할 수 있음 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회📌참고: tuple은 리포지토리 계층을 넘어서서 service나 controller 까
파라미터의 값이 null이냐 아니냐에 따라서 쿼리가 동적으로 바뀌어야 한다.📌 만약 username은 제외되지않고 필수로 들어가야한다면아래와 같이 builder에 넣어서 방어적 코드를 적성할 수 있다BooleanBuilder builder = new BooleanBu
쿼리 한번으로 대량의 데이터를 수정할 때 사용변경 감지가 일어나면서 update 쿼리가 나가는 것 개별 엔티티 건건이 나가는 것벌크 연산 처리: 벌크 연산이 나가면 이미 DB와 영속성 컨텍스트가 일치하지 않는다: 벌크 연산을 하고 데이터를 변경했지만 영속성 컨텍스트가
SQL function은 JPA와 같이 Dialect에 등록된 내용만 호출할 수 있다. member -> M으로 변경하는 replace 함수 사용소문자로 변경해서 비교: lower 같은 ansi 표준 함수들은 querydsl이 상당부분 내장하고 있다. 따라서 다음과
두가지 방법으로 사용할 수 있다1\. 생성자에서 주입하는 방법2\. spring bean으로 등록해두고 바로 주입받는 방법생성자에서 주입하는 방법주입 받는것이 하나이다. 단, 롬복 어노테이션 사용할 수 없음spring bean으로 등록하고 바로 주입받는 방법 start
파라미터로 문자열을 받을 때 null, "", empty가 아닐 때 trueMemberJpaRepositoryMemberTeamDtoTest📌만약 MemberSearchCondition condition = new MemberSearchCondition();으로 데이
JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다모든 Persistence Framework는 내부적으로 JDBC API를 이용한다. JDBC는 데이터베이스에서 자료를 쿼리
애플리케이션이 DB로부터 데이터를 가지고 오는 것DB와 통신하여 데이터를 읽는 것에는 큰 비용이 소모되기 때문에 이를 해결하는 전략fetch 전략에는 FetchType.EAGER(즉시로딩), FetchType.LAZY(지연로딩) 2가지 설정이 있다EAGER:즉시로딩 :
사용자 정의 인터페이스 작성 사용자 정의 인터페이스 구현스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속사용자 정의 인터페이스사용자 정의 인터페이스 구현구현체의 경우 클래스명을 Spring Data JPA 클래스명 + Impl로 작성해줘야 한다.만약 쿼리가 한 기
사용자 정의 인터페이스에 페이징 메서드 정의사용자 정의 인터페이스 구현fetchResult를 사용하면 페이징 처리한 데이터와 count를 같이 조회할 수 있다. 하지만 fetchResult를 사용하면 count 쿼리 부분에서 문제가 된다. count에 상관없는 테이블을