조인 - 객체 끼리 조인을 통해 조인 쿼리문을 사용할 수 있다. • 내부 조인 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 조인 - ON 절 1. 조인 대상 필터링 • 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 JPQL SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' SQL SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m...
JAVA
페이징 - 데이터 베이스를 조회할 때 n번 부터 m번까지 조회 할 수 있도록 해주는 api 페이징 API • JPA는 페이징을 다음 두 API로 추상화 • setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작) • setMaxResults(int maxResult) : 조회할 데이터 수 example //페이징 쿼리 String jpql = "select m from Member m order by m.name desc"; List resultList = em.createQuery(jpql, Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList();
문제점 너무 많은 태그들이 나와서 태그 개수를 제한해야함. 해결책 public GameLimitTagListResponseDto(Game entity) { this.gameId = entity.getGameId(); this.gameName = entity.getGameName(); this.gameInfo = entity.getGameInfo(); this.launchDate = entity.getLaunchDate(); this.evaluation = entity.getEvaluation(); this.imgUrl = entity.getImgUrl(); this.videoUrl = entity.getVideoUrl(); this.devCompany = entity.getDevCompany(); thi..
프로젝션 • SELECT 절에 조회할 대상을 지정하는 것 • 프로젝션 대상: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 데이터 타 입) • SELECT m FROM Member m -> 엔티티 프로젝션 • SELECT m.team FROM Member m -> 엔티티 프로젝션 • SELECT m.address FROM Member m -> 임베디드 타입 프로젝션 • SELECT m.username, m.age FROM Member m -> 스칼라 타입 프로젝션 • DISTINCT로 중복 제거 프로젝션 - 여러 값 조회 ※ SELECT m.username, m.age FROM Member m 1. Query 타입으로 조회 Query query = em.CreateQuery("SELECT m...
JPQL 이란 • JPQL은 객체지향 쿼리 언어다.따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. • JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하 지 않는다. • JPQL은 결국 SQL로 변환된다. JPQL 문법 • select m from Member m where m.age > 18 • 엔티티와 속성은 대소문자 구분O (Member, age) • JPQL 키워드는 대소문자 구분X (SELECT, FROM, where) • 엔티티 이름 사용, 테이블 이름이 아님(Member) • 별칭은 필수(m) (as는 생략가능) 집합과 정렬 • GROUP BY, HAVING • ORDER BY select COUNT(m), //회원수 SUM(m.age), //나이..
값 타입 컬렉션 • 값 타입을 하나 이상 저장할 때 사용 • @ElementCollection, @CollectionTable 사용 • 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다. • 컬렉션을 저장하기 위한 별도의 테이블이 필요함 - MEMBER @Entity public class Member{ @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; @Column(name="USERNAME") private String name; @Embedded private Period workPeriod; @Embedded private Address homeAddress; @ElementCollection @CollectionTable(name..