전체 글 55

모든 게 무너지고 있어 : Everything is falling apart

안녕하세요! 오늘 배운 표현은 "모든것이 무너지고있어.." 라는 표현입니당! 바로 예문을 보시죠! Everything is falling apart. 모든게 다 무너지고 있어. She's falling apart. 그녀는 무너지고 있어. Things are falling apart. 엉망진창이네요. The aging bridge fell apart, but thankfully no one was hurt. 그 노후한 다리가 무너졌지만 다행히 아무도 다치지 않았어. Once the group break up, their careers will also fall apart. 그 그룹이 해체하면 그들의 커리어도 무너질 거야. Their business fell apart because they didn't h..

카테고리 없음 2024.03.13

JPQL - 서브 쿼리

JPQL도 SQL 처럼 서브 쿼리를 지원한다. 여기에는 몇가지 제약이 있는데, 서브쿼리를 WHERE, HAVING 절에서만 사용할 수 있고, SELECT, FROM 절에서는 사용할 수 없다. 다음은 나이가 평균보다 많은 회원을 찾는다. select m from Member m where m.age > (select avg(m2.age) from Member m2) 다음은 한 건이라도 주문한 고객을 찾는다. select m from Member m where (select count(o) from Order o where m = o.member) > 0 # 참고로 이 쿼리는 다음처럼 컬렉션 값 연관 필드의 size 기능을 사용해도 같은 결과를 얻을 수 있다. select m from Member m whe..

JPA 2023.10.23

JPQL - 경로 표현식

경로 표현식이라는 것은 .(점)을 찍어 객체 그래프를 탐색하는 것이다. select m.username from Member m join m.team t join m.orders o where t.name = '팀A' 위의 JPQL에서 m.username, m.team, m.orders, t.name이 모두 경로 표현식을 사용한 예다. 경로 표현식의 용어 정리 상태 필드: 단순히 값을 저장하기 위한 필드(필드 or 프로퍼티) 연관 필드: 연관관계를 위한 필드, 임베디드 타입 포함(필드 or 프로퍼티) - 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티 - 컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션 @Entity public class M..

JPA 2023.10.23

JPQL - 페치 조인(Fetch Join)

페치 조인은 SQL에서 이야기하는 조인의 종류는 아니고 JPQL에서 성능 최적화를 위해 제공하는 기능이다. 이것은 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능인데 join fetch 명령어로 사용할 수 있다. 엔티티 패치 조인 패치 조인을 사용해서 회원 엔티티를 조회하면서 연관된 팀 엔티티도 함께 조회하는 JPQL을 보자. select m from Member m join fetch m.team 예제를 보면 join 다음에 fetch라 되어있는데, 이렇게 하면 연관된 엔티티나 컬렉션을 함께 조회하는데 여기서는 회원(m)과 팀(m.team)을 함께 조회한다. 참고로 일반적인 JPQL 조인과는 다르게 m.team 다음에 별칭이 없는데 페치 조인은 별칭을 사용할 수 없다. 실행된 SQL은 다음과 같다..

JPA 2023.10.12

JPQL 조인

내부 조인 내부조인은 INNER JOIN을 사용하고, INNER는 생략할 수 있다. String teamName = "팀A"; String query = "SELECT m FROM Member m INNER JOIN m.team t " +"WHERE t.name = :teamName"; List members = em.createQuery(query, Member.class) .setParameter("teamName", teamName) .getResultList(); 회원과 팀을 내부 조인해서 '팀A'에 소속된 회원을 조회한다. 외부 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 다음과 같이 사용하고, OUTER는 생략 가능하다. 컬렉션 조인 일대다 관..

JPA 2023.10.10