반응형
상속관계 매핑 - @Inheritance 관계형 DB는 상속 관계라는 개념이 없고, 슈퍼 타입, 서브 타입 관계라는 모델링 기법이 객체 상속과 유사하다. 그래서 JPA는 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑할 수 있는 상속 관계 매핑을 지원한다. JPA의 상속 관계 매핑은 총 3가지 방법이 존재한다. JOIN 전략 ( JOINED ) 단일 테이블 전략 ( SINGLE_TABLE ) 구현 클래스마다 테이블 전략 ( TABLE_PER_CLASS ) - 많은 단점이 존재해 추천 X 상속 관계 매핑에 사용되는 주요 어노테이션은 다음과 같다. @Inheritance(strategy=InheritanceType.??) 상속관계 매핑을 사용하는 주요 어노테이션으로 부모클래스에 해당 어노테이션을 붙..
@ManyToOne - 다대일 ( N : 1) 연관관계 매핑 시 가장 많이 사용하는 매핑 방법이다. 다대일은 외래키(FK)를 갖고 있는 "다"쪽이 연관관계의 주인이 된다. 단방향 매핑 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; ... } @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String nam..
이번 포스팅에서 JPA의 연관관계 매핑의 주인이란 무엇인지? 또 연관관계 매핑의 주인이 왜 필요한지에 대해 알아보려한다. 연관관계 주인이 필요한 이유에 대해 먼저 말하자면, 객치 지향의 패러다임과 데이터베이스의 패러다임에 차이가 있기 때문이다. 먼저 각 패러다임의 차이를 이해할 수 있도록 양방향과 단방향 매핑에 대해 설명하고자 한다. 양방향과 단방향 매핑 양방향 : 두 객체 모두가 각각 참조용 필드를 갖고 참조 단방향 : 두 객체 사이에 하나의 객체만 참조용 필드를 갖고 참조 데이터베이스에서 양방향과 단방향 데이터베이스에는 양방향과 단방향이라는 개념이 없다. 외래키(FK) 하나면 양쪽의 연관관계를 알 수 있다. (양방향 관계의 특성을 갖는다.) 데이터 베이스 테이블은 외래키(FK) 하나로 양쪽 테이블을 ..
기본키(primary key) 매핑하는 방법은 총 2가지로 직접 할당과 자동 생성이 있다. 직접 할당 : @Id 어노테이션만 사용하여 Id값을 직접할당 자동 생성 : @Id와 @GeneratiedValue를 사용하여 원하는 키 생성 전략을 선택 자동 생성의 키 생성 전략은 다음과 같이 4가지로 분류 된다. 키 생성 전략 IDENTITY : 데이터베이스에 위임 (MYSQL) SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용 (ORACLE) TABLE : 키 생성용 테이블 사용 (모든 DB에서 사용) AUTO : dialect(방언) 설정에 따라 자동 지정 (기본값) 이 각 키 생성 전략에 대해 자세히 알아보자. IDENTITY 전략 기본 키 생성을 데이터베이스에 위임하는 전략 (주로 MySQL, Pos..
객체와 테이블 매핑 @Entity @Entity가 붙은 클래스를 엔티티라고 하고 JPA가 관리 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수이다. 속성 값 속성 설명 기본값 name JPA에서 사용할 엔티티 이름을 지정한다 클래스 이름을 그대로 사용 주의할점 기본 생성자 필수이다. (파라미터가 없는 public 또는 protected 생성자) final, enum, interface, inner 클래스에서는 사용할 수 없다. 저장할 필드의 변수에 final을 사용할 수 없다. @Table 엔티티와 매핑할 테이블 지정한다. 속성 값 속성 설명 기본값 name 매핑할 테이블 이름을 지정한다 엔티티 이름 사용 catalog catalog 기능이 있는 DB에서 catalog를 매핑한다. ..
spring.jpa.hibernate.ddl-auto 데이터베이스 ddl 자동 생성 옵션으로 Entity 설정을 참고하여 애플리케이션 실행시점에 Hibernate에서 자동으로 DDL을 생성하여, 필요한 Database의 Table 설정들을 자동으로 수행해주는 기능이다. application.yml spring: jpa: hibernate: ddl-auto: 옵션 ddl-auto의 옵션으로는 5가지가 있다. ddl-auto 옵션 종류 create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE) create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용) update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB Lock을 방지..