본문 바로가기

Java46

임베디드 타입 임베디드 타입(복합 값 타입)새로운 값 타입을 직접 정의할 수 있음주로 기본 값 타입을 모아서 만들기때문에 복합 값 타입이라고도 함@Embeddable : 값 타입을 정의하는 곳에 표시@Embedded : 값 타입을 사용하는 곳에 표시기본 생성자 필수import javax.persistence.Embeddable;import java.time.LocalDateTime;@Embeddablepublic class Period { //기간 private LocalDateTime startDate; private LocalDateTime endDate; public Period() { } public Period(LocalDateTime startDate, LocalDateTim.. 2023. 12. 30.
영속성 전이 영속성 전이(CASCADE)특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함 제공(부모 엔티티 저장 시 자식 엔티티도 함께 저장)영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없음종류ALL : 모두 적용PERSIST : 영속REMOVE : 삭제MERGE : 병합REFRESH : refreshDETACH : detach@Entitypublic class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) .. 2023. 12. 29.
즉시로딩, 지연로딩 즉시로딩데이터를 조회할 때 연관된 모든 객체의 데이터까지 한번에 불러오는 것(fetch = FetchType.EAGER)프록시를 가져오지 않고 실제 엔티티를 가져옴// Member와 Team이 N:1public class Member {...@ManyToOne(fetch = FetchType.EAGER) // 즉시로딩@JoinColumn(name = "TEAM_ID")private Team team;...}Team team = new Team();team.setName("teamA");em.persist(team);Member member1 = new Member();member1.setUserName("member1");member1.setTeam(team);em.persist(member1);em.f.. 2023. 12. 23.
프록시(Proxy) 프록시실제 클래스를 상속받아서 만들어짐(클래스와 겉모양이 같음)em.find()데이터베이스를 통해서 실제 엔티티 객체 조회em.getReference()데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회그러나 해당 객체를 사용할 때는 쿼리가 나감Entity target = null 프록시 초기화프록시에 값이 없을 때(target = null) 영속성 컨텍스트를 통해 진짜 값을 요청 후 가지고 있음초기화 여부 확인(true, false) : PersistenceUnitUtil().isLoaded(Object entity)조회 등 쿼리가 나감(초기화 이후에는 X, 영속성 컨텍스트를 통해 가져옴)프록시 강제 초기화org.hibernate.Hibernate.initialize(entity)강제 호출 (m.. 2023. 12. 20.
MappedSuperclass MappedSuperclass@MappedSuperclass공통 매핑 정보가 필요할 때 사용상속관계 매핑이 아님엔티티가 아니므로 테이블과 매핑 불가부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공조회, 검색 불가추상 클래스 권장테이블과 관계가 없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할주로 ADD_DATE, ADD_TIME, CHANGE_DATE, CHANGE_TIME 등과 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용null 허용@MappedSuperclasspublic class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String last.. 2023. 12. 20.
상속관계 매핑 상속관계 매핑관계형 데이터베이스는 상속관계 X슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑주요 어노테이션@Inheritance(strategy = InheritanceType.xxx)@DiscriminatorColumn(name = "DTYPE")@DiscriminatorValue("xxx")조인 전략@Inheritance(strategy = InheritanceType.JOINED)부모 테이블, 자식 테이블로 나눈 뒤 SELECT 시 조인 사용(각각 테이블로 변환)@Inheritance(strategy = InheritanceType.JOINED) 사용장점테이블 정규화외래키 참조 무결성 제약조건 활용가능저장공간 효율화단점조회 시 조인.. 2023. 12. 20.