query 7

[JAVA] 결과조회(fetch)

fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환 fetchOne() : 단 건 조회 결과가 없으면 : null 결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException fetchFirst() : limit(1).fetchOne() fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행 fetchCount() : count 쿼리로 변경해서 count 수 조회 @Test public void resultFetch() throws Exception{ //given List fetch = jpaQueryFactory .selectFrom(member) .fetch(); Member fetchOne = jpaQueryFact..

JAVA 2022.03.14

[JAVA] Q-Type

Q-Type class는 Querydsl을 설정을 진행을 완료하면 @Entity가 붙은 클래스를 찾아 자동으로 생성된다. 예 ) @Entity가 붙은 User.java 의 QUser.java 클래스 파일이 자동으로 생성됨 이러한 Q-Type의 class들은 Querydsl을 사용할 때 우리가 만든 도메인 클래스의 구조를 설명해주는 역할을 한다. Q class 인스턴스를 사용하는 방법은 2가지가 있다. 1. 별칭 직접 지정 QMember qMember = new QMember("m"); 2. 기본 인스턴스 사용 QMember qMember = QMember.member; 이걸 더 줄여서 사용하기 위해 static import와 함께 사용한다. 아래 처럼 선언하면 굳이 선언을 해주지 않아도 사용 할 수 있다..

JAVA 2022.03.07

[JAVA] 벌크성 수정 쿼리와 @EntityGraph

Bulk 벌크(bulk) 연산은 중간에 update 쿼리를 날려버린다.( 영속성 컨텍스트 모르게 ) , 따라서 벌크연산을 진행하면 DB에는 반영이 되어있지만 영속성 컨텍스트에는 반영이 되어있지 X 그래서 벌크연산 후 영속성 컨텍스트를 clear 해주지 않으면 업데이트 되지 않은 값이 출력된다. → 매우 불편!! 이때 매번 clear를 해줄 수 없으니까 annotation을 사용해보자! → @Modifying 벌크성 수정, 삭제 쿼리는 @Modifying 어노테이션을 사용한다. 사용하지 않으면 예외 발생(Not supported for DML operations....) 벌크연산을 사용해도 fetch와 똑같이 한방쿼리가 실행됨 // 벌크연산 사용 @Modifying @Query("update Member ..

JAVA 2022.02.23

[JAVA] @Query에서 DTO로 조회하기

repository에서 dto로 조회하려면 new operation을 사용해야한다. 1. 일단 내가 필요한 데이터 들을 뽑아 Dto로 생성 package study.datajpa.dto; import lombok.Data; @Data // getter, setter 다 쓰임 웬만하면 사용 X public class MemberDto { private Long id; private String username; private String teamName; public MemberDto(Long id, String username, String teamName) { this.id = id; this.username = username; this.teamName = teamName; } } 2. @Query와..

JAVA 2022.02.15

[JAVA] @NamedQuery 와 @Query

@NamedQuery - 장점 NamedQuery는 애플리케이션 로딩 시점에 버그를 잡을 수 있다는 장점이 있지만 실무에서 잘 사용하지 않는다. - 단점 파싱이 안된다. 기능을 호출 하기 전까지는 버그를 잡을 수 없다. @Query 애플리케이션 로딩 전에 쿼리를 다 sql로 파싱해서 만들어 둔다. → 그렇다면 애플리케이션 실행 전에 버그를 잡을 수 있다. @Query("select m from Member m where m.username = :username and m.age = :age") List findUser(@Param("username") String username, @Param("age") int age); @Query("select m.username from Member m") Lis..

JAVA 2022.02.15

[JAVA] JPA 조인과 서브쿼리

1. 내부조인 select m from Member m inner join m.team t 2. 외부조인 select m from Member m left join m.team t 3. 세타조인 select count(m) from Member m, Team t where m.username=t.name 서브쿼리 - JPA 서브쿼리의 한계 JPA는 where, having 절에서만 서브 쿼리 사용 가능 select 절도 가능(하이버네이트 지원) from 절의 서브 쿼리는 현재 jpql에서 불가능: 조인으로 풀어서 사용할 수 있으면 해결

JAVA 2022.01.18

[Oracle] DB 생성

1. 테이블 생성 CREATE TABLE [테이블 명] ( [컬럼명] [데이터타입] [크기], ... , [컬럼명] [데이터타입] [크기]); CREATE TABLE testtable( username NVARCHAR2(10), age NUMBER(3,0), mobile NVARCHAR2(11), reg_date DATE DEFAULT SYSDATE ); 2. 데이터타입 종류 1) 문자타입(검색속도가 빠르다.) 고정형 CHAR(바이트 수) NCHAR(글자수) 가변형 VARCHAR2(바이트 수) NVARCHAR2(글자수) 2) 숫자 NUMBER( 전체자릿수,소숫점 자릿수 ) NUMBER : 오라클이 알아서 계산 3) 날짜 Date

DB 2021.03.24