전체 글
-
#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..
-
#JPA-14 즉시 로딩과 지연 로딩JPA 2021. 2. 19. 17:45
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 Member를 조회할 때 Team도 함께 조회해야 할까? 단순히 member 정보만 사용하는 비즈니스 로직 println(member.getName()); 지연 로딩 LAZY을 사용해서 프록시로 조회 지연 로딩 지연 로딩 LAZY을 사용해서 프록시로 조회 Member member = em.find(Member.class,"1L"); //Team은 가짜 proxy Team team = member.getTeam(); team.getName(); 실제 team을 실제 사용하는 시점에 초기화(DB 조회) -> 이때 쿼리가 나간다. Member와 Team을 자주 함께 사용한다면? 쿼리가 두번씩나감 member 따로 team 따로~~ net..
-
#JPA-13 프록시JPA 2021. 2. 19. 17:32
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 프록시 학습전 의문? Member를 조회할 때 Team도 함께 조회해야 할까? 회원과 팀 함께 출력 public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName()); } 회원만 출력 public void printUser(String memberId) { Member member = em.find(..
-
#JPA-12 상속관계 매핑JPA 2021. 2. 19. 11:00
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 상속관계 매핑 • 관계형 데이터베이스는 상속 관계X • RDB에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 • 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 • 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 • 각각 테이블로 변환 -> 조인 전략 • 통합 테이블로 변환 -> 단일 테이블 전략 • 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 • @Inheritance(strategy=InheritanceType.XXX) • JOINED: 조인 전략 • SINGLE_TABLE: 단일 테이블 전략 • TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 • @..
-
#JPA-11 다양한 연관관계 매핑JPA 2021. 2. 18. 20:23
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 연관관계 매핑시 고려사항 3가지 • 다중성 • 단방향, 양방향 • 연관관계의 주인 단방향, 양방향 • 테이블 • 외래 키 하나로 양쪽 조인 가능 • 사실 방향이라는 개념이 없음 • 객체 • 참조용 필드가 있는 쪽으로만 참조 가능 • 한쪽만 참조하면 단방향 • 양쪽이 서로 참조하면 양방향(사실은 단방향이 두개 있는 것) 연관관계의 주인 • 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 • 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 • 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래 키 를 관리할 곳을 지정해야함 • 연관관계의 주인: 외래 키를 관리하는 참조 • 주인의 반대편: 외래 키에 영향을 주지..
-
#JPA-10 연관관계 매핑 기초JPA 2021. 2. 17. 23:01
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 1. 예제 시나리오 • 회원과 팀이 있다. • 회원은 하나의 팀에만 소속될 수 있다. • 회원과 팀은 다대일 관계다. N:1 Member Class package jpabook.jpashop.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Member { @Id @GeneratedValue//생략하면 오토 @Column(name = "MEMBER_ID") private Long id; pr..
-
#JPA-9 기본 키 매핑JPA 2021. 2. 16. 21:53
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 1. 기본 키 매핑 방법 • 직접 할당: @Id만 사용 • 자동 생성(@GeneratedValue) • IDENTITY: 데이터베이스에 위임, MYSQL • SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE • @SequenceGenerator 필요 • TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 • @TableGenerator 필요 • AUTO: 방언에 따라 자동 지정, 기본값 2. IDENTITY 전략 - 특징 • 기본 키 생성을 데이터베이스에 위임 • 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용 (예: MySQL의 AUTO_ INCREMENT) • JPA는 보통 트랜..
-
#JPA-8 데이터베이스 스키마 자동 생성 & 필드와 컬럼 매핑JPA 2021. 2. 15. 23:03
[출처] 인프런 김영한 강사님 -자바 ORM 표준 JPA 프로그래밍 기본 1. 데이터베이스 스키마 자동생성 • DDL을 애플리케이션 실행 시점에 자동 생성 • 테이블 중심 -> 객체 중심 • 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 • 이렇게 생성된 DDL은 개발 장비에서만 사용 • 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬 은 후 사용 2. 데이터베이스 스키마 자동 생성 - 속성 hibernate.hbm2ddl.auto 스키마 자동 생성하기 설정 • 스키마 자동생성하기 실행, 옵션별 확인 • 데이터베이스 방언 별로 달라지는 것 확인(varchar) 3. 필드와 컬럼 매핑 매핑 어노테이션 정리 hibernate.hbm2ddl.auto • @Lob- DB에 VA..