본문 바로가기

Study/JPA11

객체지향 쿼리 언어) Named 쿼리, 벌크 연산 📌 Named 쿼리 - 정적 쿼리미리 정의해서 이름을 부여해두고 사용하는 JPQL자주 사용되는 쿼리를 표준화하고, 코드의 가독성과 유지보수성을 높이기 위한 방법정적 쿼리어노테이션, XML에 정의애플리케이션 로딩 시점에 초기화 후 재사용🌟쿼리가 실행될 때마다 컴파일되는 동적 쿼리와 다름!!!!애플리케이션 로딩 시점에 쿼리를 검증🌟🌟문법 오류를 사전에 발견할 수 있음 //Member 엔터티 클래스에 @NamedQuery 어노테이션을 사용하여 쿼리를 정의@Entity@NamedQuery( name = "Member.findByUsername", query="select m from Member m where m.username = :username") public class M.. 2024. 7. 30.
객체지향 쿼리 언어) JPQL - 페치 조인(fetch join) 📌 JPQL - 페치 조인(fetch join) 🌟🌟🌟 🌟🌟🌟실무에서 정말 정말 정말 중요 !!! 🌟🌟🌟SQL 조인 종류X연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능JPQL에서 성능 최적화를 위해 제공하는 기능join fetch 명령어 사용해 [ LEFT [OUTER] | INNER ] JOIN FETCH 조인경로를 나타냄 📌 엔티티 페치 조인회원을 조회하면서 연관된 팀도 함께 조회(SQL 쿼리 한 번에 가능)SQL을 보면 회원 뿐만 아니라 팀(T.)도 함께 SELECT[JPQL]select m from Member m join fetch m.team >> m만 select 함  [SQL] SELECT M., T.* FROM MEMBER MINNER JOIN TEAM .. 2024. 7. 30.
객체지향 쿼리 언어) JPQL - 경로 표현식 📌 JPQL - 경로 표현식 📌 경로 표현식. (점)을 찍어 객체 그래프를 탐색하는 것. 상태필드, 단일 값 연관필드, 컬렉션 값 연관 필드어디로 가느냐에 따라 결과 값이 달라짐.⇒ 3가지를 구분해 이해해야 함.!!상태 필드(state field): 단순히 값을 저장하기 위한 필드 (ex: m.username)연관 필드(association field): 연관관계를 위한 필드단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team)컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders)경로 탐색은 필드의 종류에 따라 다르게 이루어짐연관 필드에서 단일 값인지 컬렉션 값인지에 따라 탐색/조인 방식이 달라짐 📌 경로 표.. 2024. 7. 30.
JPQL 📌 JPQL 타입 표현과 기타식 JPQL 타입 표현문자: ‘HELLO’, ‘She’’s’숫자: 10L(Long), 10D(Double), 10F(Float)Boolean: TRUE, FALSEENUM: jpabook.MemberType.Admin (패키지명 포함🌟)public enum MemberType { ADMIN, USER}member.setType(MemberType.ADMIN)...String query = "select m.username, 'HELLO', true From Member m" + "where m.type = jpql.MemberType.ADMIN"; //패키지명 포함엔티티 타입: TYPE(m) = Member (상속 관계에서 사용) JPQL 기타SQL과 문법이 .. 2024. 7. 27.
조인과 서브쿼리 📌 조인 내부 조인SELECT m FROM Member m [INNER] JOIN m.team tinner는 생략 가능외부 조인SELECT m FROM Member m LEFT [OUTER] JOIN m.team tnull값도 나옴 → 만약 team의 null값도 명시적으로 표현해줘야할 때 사용outer는 생략 가능세타 조인select count(m) from Member m, Team t where m.username = t.name막 조인연관관계 테이블도 조인. 카테시안 곱으로 모두 불러와 조회📌 조인 - ON 절ON절을 활용한 조인(JPA 2.1부터 지원)1. 조인 대상 필터링회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인//JPQLSELECT m, t FROM Member m LEFT JO.. 2024. 7. 27.
프로젝션과 페이징 📌 프로젝션 (SELECT)  SELECT 절에 조회할 대상을 지정하는 것프로젝션 대상: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 데이터 타입)                                                      **관계형 DB는 스칼라 타입만 넣을 수 있음 SELECT m FROM Member m ->엔티티 프로젝션SELECT m.team FROM Member m ->엔티티프로젝션(멤버에 연관된 팀)SELECT m.address FROM Member m -> 임베디드 타입 프로젝션임베디드는 모두 어디 소속돼있기에 어디 소속인지를 명시해줘야함                                                                   .. 2024. 7. 27.
반응형