전체 글

피곤한투티의 개발/일상 블로그
김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

13. 값 타입

기본값 타입JPA의 데이터 타입 분류엔티티 타입@Entity로 정의하는 객체데이터가 변해도 식별자로 지속해서 추적 가능예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능값 타입int, Integer, String처럼 단순히 값으로 사용되는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적 불가예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류기본 값 타입자바 기본 타입(int, double)래퍼 클래스(Integer, Long)String임베디드 타입(embedded type, 복합 값 타입)컬렉션 값 타입(collection value type) 절대 기본 값 타입을 공유해선 안 돼.int, double같은 기본 타입은 공유 자체가 되지 않는다.In..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

12. 실전예제5 - 연관관계 관리

글로벌 페치 전략 설정모든 연관관계를 지연 로딩으로 바꾸기@ManyToOne, @OneToOne은 기본이 즉시 로딩이므로 지연로딩으로 변경 영속성 전이 설정Order → Delivery를 영속성 전이 ALL 설정Order → OrderItem을 영속성 전이 ALL 설정 코드@Entity public class Category extends BaseEntity { @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn private Category parent; @OneToMany(mappedBy = "parent") private List children = new ArrayList(); @ManyToMany(..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

11. 프록시와 연관관계 관리

프록시Member를 조회할 때 Team도 함께 조회를 해야할까??비지니스 로직상 Member를 조회할 때 Team도 같이 필요한 경우에는 조회해야할 것이다.반면, Team이 필요한 경우가 드문 경우에는 Team을 같이 조회하는건 비효율적이다. 프록시 기초em.find() vs em.getReference()em.find(): 데이터베이스를 통해서 실제 엔티티 객체를 조회em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체를 조회 프록시 특징프록시 클래스는 실제 클래스를 상속 받아서 만들어 진다.따라서, 실제 클래스와 겉 모양이 똑같다.타입 체크시 주의 해야한다!==로 비교가 불가능하고, instance of 로 비교해야한다.JPA에서 프록시를 사용하는지 안 하는지 모를테..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

10. 예제4 - 상속관계 매핑

요구사항 추가상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다.모든 데이터는 등록일과 수정일이 필수다. 도메인 모델 도메인 모델 상세테이블 설계 코드@Entity public class Album extends Item { private String artist; private String etc; } @Entity public class Book extends Item { private String author; private String isbn; } @Entity public class Movie extends Item { private String director; private String actor; }@MappedSuperclass public class BaseEntity ..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

9. 고급 매핑

상속관계 매핑관계형 데이터베이스는 상속관계를 갖고 있지 않다.슈퍼타입, 서브타입 관계라는 모델링 기법이 개체 상속과 유사하기 때문에 이 방법을 대신 사용한다. 슈퍼타입, 서브타입 논리모델을 실제 물리 모델로 구현하는 방법조인 전략: 각각 테이블로 변환단일 테이블 전략: 통합 테이블로 변환서브타입 테이블로 변환: 구현 클래스마다 테이블 전략 주요 어노테이션@Inheritance(starategy=InheritanceType.XXX)JOINED: 조인 전략SINGLE_TABLE: 단일 테이블 전략TABLE_PER_CLASS: 구현 클래스마다 테이블 전략@DiscriminatorColumn(name=”DTYPE”)@DiscriminatorValue(”XXX”) 조인 전략각 서브타입의 PK와 슈퍼타입의 PK가 ..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

8. 실습3 - 다양한 연관관계 매핑

배송, 카테고리 엔티티 추가주문과 배송은 1:1(@OneToOne)상품과 카테고리는 N:M(@ManyToMany) ERD 다이어그램 엔티티 상세다대다는 쓰면 안 되지만, 이번 시간에는 한 번 써보기로 하자. 코드@Entity public class Category { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn private Category parent; @OneToMany(mappedBy = "parent") private List children = new ArrayList(); @ManyToMany @JoinTable private List items; private String name; }@Entity public class Deli..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

7. 다양한 연관관계 매핑

연관관계 매핑시 고려사항 3가지다중성다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManToMany다대다는 절대 실무에서 사용하면 안 된다. 단방향, 양방향테이블외래키 하나로 양쪽 조인이 가능하다.따라서, 방향의 개념이 없기 때문에 항상 양방향이다. 객체참조용 필드가 있는 쪽으로만 참조가 가능하다.한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향이다.양방향도 사실 단방향이 2개 있는 것이지만, 논리적으로 양방향으로 취급한다. 연관관계의 주인테이블은 외래키 하나로 두 테이블이 연관 관계를 맺는데, 객체는 그렇게 하지 모 한다.따라서 양방향인 경우, 두 참조에서 어느 값을 업데이트할 때 외래키에 적용할지 설정해야 하는데, 이것이 주인이다. 다대일다대일 단방향가장..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

6. 실습2 - 연관관계 매핑의 시작

객체 구조테이블 구조는 이전과 완전히 동일하고, 객체 구조만 바뀌었다. 코드@OneToMany(mappedBy = "member") private List orders;@ManyToOne @JoinColumn private Member member; @OneToMany(mappedBy = "order") private List orderItems;@ManyToOne @JoinColumn private Order order; @ManyToOne @JoinColumn private Item item; Uploaded by N2T(23.06.11 16:49)에 작성된 글 입니다.

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

5. 연관관계 매핑

연관관계가 필요한 이유@Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; … } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; … } === //팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); //회원 저장 Member member = new Member(); member.setName("..

김영한 스프링 강의/스프링 ORM 표준 JAP 프로그래밍 - 기본편

4. 실습1 - 요구사항 분석과 기본 매핑

요구사항 분석회원은 상품을 주문할 수 있다.주문 시 여러 종류의 상품을 선택할 수 있다. 도메인 모델 분석회원과 주문의 관계: 회원은 여러 번 주문할 수 있다(일대다)주문과 상품의 관계: 주문을할 때 여러 상품을 선택할 수 있다. 반대로 같은 상품도 여러 번 주문될 수 있다. 주문상품이라는 모델을만들어서 다대다 관계를 일대다, 다대일 관계로 물어냈다. 테이블 설계 엔티티 설계와 매핑구현@Entity public class Member { @Id @GeneratedValue private Long id; private String name; private String city; private String street; private String zipcode; }@Entity @Table(name = "O..

피곤한투티
ThuThi's Tistory