<학습목표>
관계형데이터베이스와 매핑되는 객체인 엔티티의 매핑에 대해서 공부해보자
: JPA는 엔티티 객체를 생성할 때, 기본 생성자(Default Constructor)를 사용한다
@Entity
@Table(name="member")
class Member{
...
}
@Entity
해당 클래스를 Entity로 만드는 어노테이션
Name
: JPA에서 사용할 엔티티 이름을 지정한다@Table
엔티티와 매핑할 테이블을 지정하는 어노테이션
Table 어노테이션을 생략할 시에 엔티티 이름을 테이블 이름으로 사용한다
Name
: 엔티티와 매핑할 테이블 이름 (default. 엔티티 이름을 사용)uniqueConstraints
: DDL 생성이 유니크 제약조건을 만듬.데이터베이스 스키마 자동 생성
경로: src/resources/application.yml
spring:
h2:
console:
enabled: true //데이터베이스 콘솔 활성화
jpa:
generated-ddl: true
database: H2
show-sql: true
open-in-view: false
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
query.in_clause_parameter_padding: true
hbm2ddl: //데이터 베이스 스키마 DDL을 db로 검증하고 내보내는 프로퍼티
auto: create-drop
create
기존 테이블을 삭제하고 새로운 테이블을 생성 (drop+create)create-drop
어플리케이션 종료시 생성한 DDL 제거 (drop+create+drop)update
테이블, 엔티티 매핑정보를 비교하여 변경사항을 수정validate
테이블, 엔티티 매핑정보를 비교하여 차이가 있으면 경도를 남겨 어플리케이션을 실행하지 않는다 @Entity
@Table(name="member")
class Member{
@id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Colume(nullabe=false, length=30, unique=true)
private String nickName;
}
키본키 매핑 전략
@id
@GeneratedValue
자바는 객체지향 언어여서, 객체들은 참조값(주소)를 통해 연관관계를 맺는다.
그러나 RDB의 테이블들은 외래키로 연관관계를 맺기 때문에
서로 연관관계를 맺는 방식이 달라 JPA를 통해 객체매핑과 테이블 매핑을 연결해 주는것이다.
단방향 매핑 예시
class Member{
private long id;
}
Class Order{
private long id;
private Member member; // 주문->회원
}
양방향 매핑 예시
class Member{
private long id;
prvate List<Order> orders; // 회원->주문
}
Class Order{
private long id;
private Member member; // 주문->회원
}
이 포스팅은 프로그래머스 강의를 듣고 혼자 공부하는 끄적임노트입니다 :)
다음편은..언젠가...투비컨티뉴우.......!!!!