JPA 기본전략을 이해하고 데이터베이스 Default 값 설정 및 데이터 저장 시 설정한 기본값으로 저장하는 방법에 대해 정리하고자 합니다.!!문제 상황Spring Data JPA 라이브러리 ORM을 통해 데이터베이스 기본값을 설정하는데 올바르게 설정되지 않는 문제가 있었습니다. 기존 코드@Entity@Getter@Builder(toBuilder = true)@AllArgsConstructor@NoArgsConstructor(access = AccessLevel.PROTECTED)@Table(name = "application_tb")public class Application extends BaseTimeEntity { @Id @GeneratedValue(strategy = Generatio..
영속성 전이란 : CASCADE - 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들어 주는 것을 의미합니다. 위의 예시로 Parent와 Child는 1:N 관계로 매핑되어 있습니다. Child 엔티티는 한 Parent와 연결되어 있습니다. 이때 Parent 엔티티를 저장할 때 연관된 자식 엔티티도 함께 저장하는 것을 영속성 전이라 합니다. 영속성 전이 : CASCADE 주의 영속성 전이는 연관관계를 매핑하는 것과 관련이 없습니다. 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리한 기능만 제공하는 것입니다. CASCADE 종류 ALL : 모두 적용 PERSIST : 영속 REMOVE : 삭제 MERGE : 병합 REFRESH : 리프레쉬 DETACH : DETACH 모..
상속관계 매핑 관계형 데이터베이스에는 상속 관계가 없습니다. 객체의 상속 구조와 DB의 슈퍼타입 - 서브타입 관계를 매핑 슈퍼타입-서브타입 논리 모델을 물리 모델로 구현하는 3가지 방법 조인 전략 : 각각 테이블로 변환 단일 테이블 전략 : 통합 테이블로 변환 구현 클래스마다 테이블 전략 : 서브 타입 테이블로 변환 (비추천) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 슈퍼 타입 엔티티 @DiscriminatorColumn(name=’DTYPE’) 부모 클래스에 선언합니다. 하위 클래스를 구분하는 용도의 컬럼입니다. 관례는 ..
다대일 페치 조인 (Member - Team) 다대일 페치 조인을 하게 되면 데이터 중복이 발생하지 않습니다. String jpql = "select m from Member m join fetch m.team"; List members = em.createQuery(jpql, Member.class) .getResultList(); for (Member member : members) { //페치 조인으로 회원과 팀을 함께 조회해서 지연 로딩X System.out.println("username = " + member.getUsername() + ", " + "teamName = " + member.getTeam().name()); } // username = 회원1, teamname = 팀A // u..