728x90
- 객체와 테이블 매핑: @Entity, @Table
- 필드와 컬럼 매핑: @Column
- 기본 키 매핑: @Id
- 연관관계 매핑: @ManyToOne ,@JoinColumn
1. @Entity
JPA가 관리를 한다. JPA를 사용하여 테이블과 매핑할 클래스는 필수로 적어주어야한다.
기본 생성자가 필수 (파라미터가 없는 것) 이고 final 클래스, enum, interface, innter 클래스 사용 X
저장할 필드에 final 사용 X
2. @Table
3. @ Column
insertable,updatable : insert , update 할 것이냐 말 것이냐. 기본값은 TRUE , FALSE로 하면 변경되지 않는다.
nullable (중요) : false로 하면 not null 제약조건이 붙는다.
데이터베이스 스키마 자동 생성
- DDL을 애플리케이션 실행 시점에 자동 생성
- 테이블 중심 -> 객체 중심
- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
- 이렇게 생성된 DDL은 개발 장비에서만 사용
- 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬 은 후 사용
운영 장비에는 절대 create, create-drop, update 사용하면 안된다.
- 개발 초기 단계는 create 또는 update
- 테스트 서버는 update 또는 validate
- 스테이징과 운영 서버는 validate 또는 none
직접 스크립트를 만드는 것을 권장한다.
기본키 매핑
@Entity
@SequenceGenerator(
name = "MEMBER_SEQ_GENERATOR",
sequenceName = "MEMBER_SEQ",
initialValue = 1, allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
@Entity
@TableGenerator(
name = "MEMBER_SEQ_GENERATOR",
table = "MY_SEQUENCES",
pkColumnValue = "MEMBER_SEQ", allocationSize = 1)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "MEMBER_SEQ_GENERATOR")
private Long id;
하지만 실제로 쓰긴 어렵다. 실제로 DB들의 관례들이 있기 때문이다.
기본 키 제약 조건: null 아님, 유일, 변하면 안된다.
미래까지 이 조건을 만족하는 자연키는 찾기 어렵다. 대리키(대체키)를 사용하자.
권장: Long형 + 대체키 + 키 생성전략 사용
728x90