JPA with 김영한13 값 타입 JPA 에서 사용하는 대표적인 두 가지 타입으로 엔티티 타입과 값 타입이 있다. - 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자(identify) 로 지속해서 추적 가능 - 값 타입 int, Long, String 처럼 단순히 값으로 사용하는 기본 타입 혹은 객체 식별자가 없으므로 변경시 추적 불가능 기본값 타입 기본 값 타입은 생명주기를 엔티티에 의존한다. 회원에 존재하는 String name 값은 회원[엔티티] 을 삭제해버리면 같이 삭제 된다. 또한 값 타입은 공유할 수 없다. memberA 와 memberB의 String name 값은 공유되지 않아야 하기 때문이다. 임베디드 타입 새로운 값 타입을 직접 정의할 수 있다. JPA는 임베디드 타입이라고 한다. 주로 기본 값 타입.. 2021. 9. 27. JPQL JPQL(JAVA Persistence Query Language) 엔티티(객체)를 대상으로 데이터를 검색. SQL을 추상화하여 특정 DB의 SQL에 의존하지 않는다. 단점 : 동적 쿼리를 만들기 어렵다. select m from Member as m where m.age > 18 엔티티와 속성은 대소문자 구분(Member, age) JPQL 키워드(SELECT, FROM, WHERE)는 대소문자 구분 X 엔티티 이름을 사용한다. 테이블 이름 X - TypeQuery : 반환 타입이 명확할 때 사용 ex ) select m from Member m, Member.class - Query : 반환 타입이 명확하지 않을 때 사용 ex ) select m.username, m.age from Member m .. 2021. 9. 27. 영속성 전이와 고아객체 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 or 연관된 엔티티도 함께 영속상태로 만들고 싶을 때, 엔티티를 영속화 할 때 연관된 엔티티도 함께 영속화 하는 기능을 제공한다! [ parent ] - [ child : CASCADE ] 반드시 하나의 Parent 엔티티만 Child 엔티티 를 관리할 때 [ 단일 관리자 ] 에만 영속성 전이를 사용한다. 고아 객체 삭제 orphanRemoval = true CascadeType.ALL 두 옵션을 모두 활성화 하면 Parent 엔티티를 통해서 자식의 생명주기까지 관리가 가능하다. 부모 엔티티와 연관관계가 끊어진 자식 엔티티 자동 제거 2021. 9. 13. 즉시로딩 과 지연로딩 지연로딩 ( FetchType.LAZY) Member 에 Team 을 매핑했을 경우, 지연로딩을 사용하게 되면 최초 조회시 프록시 객체로 호출하게 된다. 그리고 실제 그 프록시 객체의 메소드를 사용하는 시점에 DB로 부터 초기화를 진행한다. 이로인해 쿼리가 단순해지고 네트워크상의 이점이 있다. [ Member를 단독적으로 사용하려고 할 때, Team 쿼리가 따로 나가지 않음 ] @OneToMany, @ManyToMany // Default = LAZY EX ] Member 를 로딩할 때, Member에 걸려있는 Team은 지연로딩. 즉 Proxy 엔티티로 호출되면 나중에 직접적인 접근이 필요할 때 DB에 초기화를 요청하여 진짜 엔티티를 가져온다. 즉시로딩 ( FetchType.EAGER) Member 에.. 2021. 9. 10. 이전 1 2 3 4 다음