728x90 개발공부 개발새발129 JPA ) 여러가지 값 타입~ 기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity 객체 데이터가 변해도 식별자로 추적 가능 회원 엔티티의 키나 나이를 변경해도, 식별자로 인식 가능해요 값 타입 int, Integer, String 처럼 단순 값으로 사용하는 자바 기본타입이나 객체 식별자가 없고 값만 있음, 변경하면 추적 불가 숫자 100을 200으로 변경하면 완전히 다른 값이에요 값 타입의 종류 *기본값 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String *임베디드 타입 embedded type 복합 값 타입 직접 커스텀해서 값 타입 사용하고 싶을 때 *컬렉션 값 타입 collection value type 임베디드, 기본 값 타입을 넣을 수 있음 기본값 타입 - 생명주기를 엔티티.. 2022. 11. 25. JPA ) 영속성 전이, 고아 객체 영속성 전이 : CASCADE : 얘는 연관관계, 즉시로딩 지연로딩과 아무 상관 없어여~ 특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들고 싶어요 ㄴ 부모 엔티티 저장할 때 자식 엔티티도 함께 저장하고 싶음... 부모를 persist 할 때, 얘랑 관련 된 자식들도 함께 persist 할 거야 @OneToMany(mappedBy="parent", cascade=CascadeType.ALL) 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다 엔티티를 영속화 할 때 편리함을 주는 것뿐 하나의 부모만 해당 자식들을 관리할 땐 좋다 좋은 예) 게시판, 첨부파일 경로... 게시판에서만 첨부파일 경로를 씀 나쁜 예) 자식이 여러군데에서 쓰이면 ㄴㄴ 고아 객체 고아 객체란???? .. 2022. 11. 25. JPA) 즉시로딩과 지연로딩??? 지연 로딩 @ManyToOne(fetch = FetchType.LAZY) //team을 지연로딩 하겠어! @JoinColumn(name = "TEAM_ID") private Team team 지연 로딩??? 얘는 일단 프록시 객체로 두겠어~(안불러올거임) 실제로 얘를 사용하는 시점에 초기화 할거야~ 그 전엔 프록시객체임(껍데기만 가져옴) 즉시 로딩 @ManyToOne(fetch = FetchType.EAGER) //team을 즉시로딩 하겠어! @JoinColumn(name = "TEAM_ID") private Team team 즉시 로딩??? 얘는 둘 다 함께 자주 쓰이니까 엔티티 초기화 둘이 같이 해줘~(쿼리 함께 바로ㄱㄱ) JPA 구현체는 가능하면 조인을 사용해서 SQL 한번에 함께 조회 그런데..... 2022. 11. 25. JPA) 프록시란 무엇인가 프록시? em.find() 실제 객체 조회 getReference() DB 조회를 미루는 가짜(프록시) 엔티티를 조회함니다 ㄴ 껍데기는 있는데 안에가 비어있음 프록시 실제 객체의 참조를 보관하고 프록시 객체를 호출하면? 실제 객체 메소드를 호출합니다 프록시 객체에서 메소드를 호출하면? 1. 영속성 콘텍스트에 초기화를 요청함 2. DB에서 조회해줌 3. 실제 Entity 생성함 4. 프록시 객체에 target(진짜 엔티티 객체를 가리키는 녀석)으로 해당 메서드를 불러온다 (마치 객체에 주소가 없다가 초기화해서 주소를 넣는 것과 비슷한듯) **프록시 특징** - 프록시 객체는 처음 사용할 때 한 번만 초기화됨 - 프록시 객체를 초기화할 때, 프록시 객체가 실제 엔티티로 바뀌는 게 아님 프록시 객체를 통해서 .. 2022. 11. 25. JPA) 상속관계 매핑 (여러 전략들과 @MappedSuperclass) 관계형 DB는 상속 관계가 없으나 슈퍼타입 - 서브타입 관계는 상속 관계와 비슷하긴 해서 슈퍼타입 - 서브타입 관계를 자바에서 상속 관계로 구현한 것이 상속관계 매핑이다 구현 방법 세 가지 조인 전략 : 슈퍼, 서브타입을 각각 테이블로 만들어서 조인으로 불러오기 단일 테이블 전략 : 통합 테이블로(하나로 통합) 만들기 구현 클래스마다 테이블 전략 : 서브타입 테이블만 만들기 어노테이션 @Inheritance(strategy = Inheritance.Type.~~~) Type 뒤에 무슨 전략을 쓸 건지 적어주면 됨 JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name=“DTYPE”).. 2022. 11. 25. JPA) 연관관계 매핑 ( 다대일, 일대다, 다대일, 다대다 ) 다양한 연관관계 매핑! 연관관계 매핑시 고려사항 3가지 - 다중성 (1:n , n:1 ....) - 단방향, 양방향 - 연관관계의 주인 1) 다중성 다대일 @ManyToOne 제일 많이 씀 일대다 @OneToMany 자주 씀 일대일 @OneToOne 가끔 씀 XX다대다 @ManyToMany 실무에서 쓰면 안 됩니다 다중성 애매할 때? 어떻게 알 수 있지? - 반대로 생각해보자 회원과 팀의 관계 / 팀과 회원의 관계 n : 1 / 1 : n 2) 단방향, 양방향 테이블은? 외래 키 하나로 두 테이블이 연관관계 사실 방향이라는 개념 XX다대다 객체는? 참조용 필드가 있는 쪽으로만 참조 가능함 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 -> 객체 입장에서는 방향이 하나입니당! 서로 왔다갔다 하는 것뿐.. 2022. 11. 24. 이전 1 ··· 16 17 18 19 20 21 22 다음 728x90