JPA
-
#JPA-22 JPQL- 다형성 쿼리, 엔티티 직접 사용, Named 쿼리JPA 2021. 2. 25. 14:58
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 TYPE • 조회 대상을 특정 자식으로 한정 • 예) Item 중에 Book, Movie를 조회해라 • [JPQL] select i from Item i where type(i) IN (Book, Movie) • [SQL] select i from i where i.DTYPE in (‘B’, ‘M’) TREAT(JPA 2.1) • 자바의 타입 캐스팅과 유사 • 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용 • FROM, WHERE, SELECT(하이버네이트 지원) 사용 TREAT(JPA 2.1) • 예) 부모인 Item과 자식 Book이 있다. (다운캐스팅같은것을 할 수 있다.) • [JPQL] select i fro..
-
#JPA-21 JPQL - 페치 조인(fetch join)JPA 2021. 2. 23. 17:39
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 실무에서 정말정말 중요함 페치 조인(fetch join) • SQL 조인 종류X • JPQL에서 성능 최적화를 위해 제공하는 기능 • 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능 (쿼리 두번나갈꺼 한방쿼리로 풀때!) • join fetch 명령어 사용 • 페치 조인 ::= [ LEFT [OUTER] | INNER ] JOIN FETCH 조인경로 엔티티 페치 조인 (쿼리를 내가 원하는대로 어던 객체그래프를 한번에 조회할거야하는것을 내가직ㅈ버 명시적으로 동적인 타이밍에 정할수 있는것!) • 회원을 조회하면서 연관된 팀도 함께 조회(SQL 한 번에) • SQL을 보면 회원 뿐만 아니라 팀(T.*)도 함께 SELECT • ..
-
#JPA-20 JPQL- 경로 표현식JPA 2021. 2. 23. 17:16
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 경로 표현식 • .(점)을 찍어 객체 그래프를 탐색하는 것 경로 표현식 용어 정리 • 상태 필드(state field): 단순히 값을 저장하기 위한 필드 (ex: m.username) • 연관 필드(association field): 연관관계를 위한 필드 • 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) • 컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 경로 표현식 특징 • 상태 필드(state field): 경로 탐색의 끝, 탐색X m.username에서 더이상갈수있는게 없기때문에 경로 탐색의 끝이고 탐색이 불가능한것 ..
-
#JPA-19 페이징 API, JOIN, JPA 기타JPA 2021. 2. 23. 16:38
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 • JPA는 페이징을 다음 두 API로 추상화 • setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작) • setMaxResults(int maxResult) : 조회할 데이터 수 페이징 API 예시 페이징 API - MySQL 방언 페이징 API - Oracle 방언 • 내부 조인: SELECT m FROM Member m [INNER] JOIN m.team t JpaMain Team team = new Team(); team.setName("teamA"); em.persist(team); Member member = new Member(); member.setUsername("membe..
-
#JPA-18 JPQL(Java Persistence Query Language)JPA 2021. 2. 23. 16:07
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 JPQL(Java Persistence Query Language) (JPQL - 기본 문법과 기능) JPQL 소개 • JPQL은 객체지향 쿼리 언어다.따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. • JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하 지 않는다. • JPQL은 결국 SQL로 변환된다. Member Class Entity package jpql; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue private Long id; private String username; privat..
-
#JPA-17 JPA가 지원하는 다양한 쿼리 방법JPA 2021. 2. 23. 16:00
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 JPA가 지원하는 다양한 쿼리 방법 • JPQL • JPA Criteria • QueryDSL • 네이티브 SQL • JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL 소개 • 가장 단순한 조회 방법 • EntityManager.find() • 객체 그래프 탐색(a.getB().getC()) • 나이가 18살 이상인 회원을 모두 검색하고 싶다면? JPQL • JPA를 사용하면 엔티티 객체를 중심으로 개발 • 문제는 검색 쿼리 • 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 • 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 • 애플리케이션이 필요한 데이터만 DB에..
-
#JPA-16 값 타입JPA 2021. 2. 22. 15:56
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 JPA의 데이터 최상위 타입 2가지 분류 1. 엔티티 타입 • @Entity로 정의하는 객체 • 데이터가 변해도 식별자로 지속해서 추적 가능 • 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 2. 값 타입 • int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 • 식별자가 없고 값만 있으므로 변경시 추적 불가 • 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 • 기본값 타입 • 자바 기본 타입(int, double) • 래퍼 클래스(Integer, Long) • String • 임베디드 타입(embedded type, 복합 값 타입) ex) x,..
-
#JPA-15 속성 전이: CASCADEJPA 2021. 2. 19. 17:55
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 속성 전이: CASCADE (즉시,지연 로딩, 연관관계 설정과 전혀 관계가 없다. ) • 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 • 예: 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장. 속성 전이: 저장 Parent class package hello.jpa; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappe..