반응형
제육's 휘발성 코딩
반응형
[Spring JPA] JPQL 중급 문법 (조인, 벌크연산)
🔷 Spring/JPA 2022. 5. 19. 15:39

경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다. 경로 표현식 용어 정리 상태 필드 단순히 값을 저장하기 위한 필드 (ex : m.username) 연관 필드 연관관계를 위한 필드 (단일 값, 컬렉션 값) 단일 값 연관 필드 @ManyToOne, @OneToOne, 대상이 엔티티 (ex: m.team) 컬렉션 값 연관 필드 @OneToMany, @ManyToMany, 대상이 컬렉션 (ex: m.orders) 경로 표현식 특징 상태 필드 : 경로 탐색의 끝으로 탐색을 더 이상 하지 않는다. 단일 값 연관 경로 : 묵시적 내부 조인(inner join)이 발생하며 탐색한다. 즉, 쿼리 튜닝 시 복잡하다. 컬렉션 값 연관 경로 : 묵시적 내부 조인이 발생하며 탐색하지 않는다. ..

[Spring JPA] JPQL 기본 문법
🔷 Spring/JPA 2022. 4. 17. 20:27

목차 객체지향 쿼리 언어 소개 JPQL 기본 문법과 기능 페치 조인 객체지향 쿼리 언어 소개 JPA는 다양한 쿼리 방법을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC 직접 사용 (Mybatis, SpringJdbcTemplate 등) JPQL 소개 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공해준다. SQL과 문법이 유사하지만 특정 데이터베이스에 의존적이지 않으며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 등을 지원해주며, 엔티티 객체를 대상으로 쿼리를 사용한다. 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색 (a.getB().getC()) 검색 예시 String jpql ..

[Spring JPA] 값 타입 (@Embedded)
🔷 Spring/JPA 2022. 4. 17. 13:04

목차 기본 값 타입 임베디드 타입 (복합 값 타입) 값 타입 불변 객체 값 타입 비교 값 타입 컬렉션 예제 기본 값 타입 JPA 데이터 타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 값 타입 분류 기본 값 타입 자바 기본 타입 (int, double) 래퍼 클래스 (Integer, Long) String 임베디드 타입 (복합 값 타입) 컬렉션 값 타입 기본 값 타입 생명주기가 엔티티에 의존한다. 회원을 삭제하면 나이, 필드도 함께 삭제와 같다. 기본 값 ..

[Spring JPA] 프록시와 연관 관계 (지연로딩 vs 즉시로딩)
🔷 Spring/JPA 2022. 4. 17. 02:05

목차 프록시 즉시 로딩과 지연 로딩 지연 로딩 활용 영속성 전이 : CASCADE 고아 객체 영속성 전이 + 고아 객체, 생명주기 예제 프록시 package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("..

[Spring JPA] 고급 매핑 (상속 관계 매핑, 매핑 정보 상속)
🔷 Spring/JPA 2022. 4. 16. 23:03

목차 상속관계 매핑 @MappedSuperclass 예제 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없고, 슈퍼타입-서브타입 관계가 있다. 상속관계 매핑이란 객체의 상속과 DB의 슈퍼타입-서브타입 관계를 매핑하는 것을 의미한다. 조인전략(각각 테이블로 변환), 단일 테이블 전략, 구현 클래스마다 테이블 전략(서브타입 테이블로 변환) 기법이 있다. 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") : 부모클래스에서 컬럼명 설정 @DiscriminatorValue("X..

[Spring JPA] 다양한 연관관계 매핑 (다대일, 일대다, 다대다, 일대일)
🔷 Spring/JPA 2022. 4. 16. 21:04

목차 연관관계 매핑 시 고려사항 3가지 다대일 일대다 일대일 다대다 예제 연관관계 매핑 시 고려사항 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 즉, 방향의 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 (단방향) 양방향을 만드려면 단방향을 2개 만드는 방식 연관관계 주인 외래키를 관리하는 곳을 연관관계 주인으로 관리하자. 주인의 반대편은 단순 조회만 가능하도록 설계하는 것이 바람직하다. 다대일 [N:1] 다대일 단방향 가장 많이 사용하는 연관관계이다. 자세한 내용은 이전 포스팅을 참고하자. 다대일 양방향 외래 키가 있는 쪽이 연관관계의 주인이고 양쪽을 ..

[Spring JPA] - 연관 관계 매핑 (단방향, 양방향)
🔷 Spring/JPA 2021. 8. 14. 22:55

목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향 : 단방향, 양방향 다중성 : 다대일, 일대다, 일대일, 다대다 연관관계의 주인 : 객체 양방향 연관관계는 관리 주인이 필요 연관관계가 필요한 이유 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. 예제 시나리오 회원과 팀 존재할 때, 회원은 하나의 팀에만 소속 = 하나의 팀에는 여러 회원 소속 회원과 팀은 다대일 관계를 갖는다. 테이블 중심 설계시 문제점 다음과 같이 설계했을 때 발생하는 문제점에 대해 알아보자. 회원 테이블 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long..

[Spring JPA] - 엔티티 매핑 종류
🔷 Spring/JPA 2021. 8. 14. 14:02

엔티티 매핑 종류 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne,@JoinColumn 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 클래스로 엔티티라고 부른다. 즉, 테이블과 매핑할 클래스는 반드시 @Entity를 적용해야 한다. 기본 생성자 필수 (파라미터가 없는 public 또는 protected) final 클래스, enum, interface, inner 클래스 사용할 수 없다. 저장할 필드에 final 키워드를 사용할 수 없다. @Table 기본 값은 클래스 이름을 그대로 사용한다. 유니크 제약 조건 추가 : @Table(uniqueConstraints = ..

반응형
반응형