목록BE (354)
오봉이와 함께하는 개발 블로그
페치 조인 실무에서 정말 정말 중요하다! SQL 조인의 종류가 아니다. JPQL에서 성능 최적화를 위해 제공하는 기능이다. 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능히다. join fetch 명령어 사용 페치 조인 ::= [ LEFT [OUTER] | INNER ] JOIN FETCH 조인경로 엔티티 페치 조인 N:1 관계 회원을 조회하며 연관돤 팀도 함께 조회하고 싶다.(SQL 한 번에) SQL을 보면 회원 뿐만 아니라 팀(T.*)도 함께 SELECT JPQL SELECT m FROM Member m join fetch m.team SQL SELECT M., T.\ FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID = T.ID 즉시 로딩과 유사하지만 이건..
경로 표현식 경로 표현식이란 .(점)을 찍어서 객체 그래프를 탐색하는 것이다. select m.username -> 상태 필드 from Member m join m.tean t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드 where t.name 용어 정리 상태 필드(state field) : 단순히 값을 저장하기 위한 필드 연관 필드(assocation field) : 연관관계를 위한 필드 단일 값 연관 필드 @ManyToOne, @OneToOne, 대상이 엔티티 컬렉션 값 연관 필드 @OneToMany, @ManyToMany, 대상이 컬렉션 특징 상태 필드(state field) 경로 탐색의 끝이기 때문에 더 이상 탐색이 진행되지 않는다. 단일 값 연관 경로 묵시적 ..
JPQL 기본 함수 JPQL이 제공하는 표준 함수이기 때문에 DB에 관계없이 사용하면 된다. CONCAT 문자열을 합치는 함수 select concat('a', 'b') from Member m SUBSTRING 문자열을 자르는 함수 select substring(m.username, 2, 3) from Member m TRIM 공백 제거 LOWER, UPPER 대문자, 소문자 변환 LENGTH 문자의 길이 LOCATE 1부터 시작해서 첫 번째 문자열(문자)이 두 번째 문자열에서 몇 번째 있는지 찾아주는 함수 select locate('de', 'abcdefg') from Member m 4를 리턴해줌 ABS, SQRT, MOD SIZE(JPA용도..
JPQL 타입 표현 문자 : 'HELLO', 'She''s' 작은 따옴표 하나더 표현하려면 '' 두 개 연달아서 사용 "SELECT m.username, 'HELLO', true FROM Member m" 숫자 : 10L(Long), 10D(Double), 10F(Float) Boolean : TRUE, FALSE "SELECT m.username, 'HELLO', TRUE FROM Member m" ENUM : jpabook.MemberType.Admin (패키지명 포함) "SELECT m.username, 'HELLO', true FROM Member m where m.type = jpql.Member..
조인 SQL 조인이랑 실행되는 것은 똑같지만, 엔티티를 중심으로 동작하기 때문에 객체 스타일로 문장을 작성해야 한다. 내부 조인 SELECT m FROM Member m [INNER] JOIN m.team t 외부 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 세타 조인 아무 연관관계가 없는 조인을 할 때 사용한다. select count(m) from Member m, Team t where m.username = t.name 조인 간단한 예시 String query = "select m from Member m inner join m.team t"; // inner는 생략 가능. String query = "select m from Member m le..