어노테이션 | 설명 |
@Entity | 클래스를 엔티티로 선언 |
@Table | 엔티티와 매핑할 테이블을 지정 |
@Id | 테이블의 기본키에 사용할 속성을 지정 |
@GeneratedValue | 키 값을 생성하는 전략 명시 |
@Column | 필드와 컬럼 매핑 |
@Lob | BLOB,CLOB 타입 매핑(용어 설명 참조) |
@CreationTimestamp | insert 시 시간 자동 저장 |
@Update Timestamp | update 시 시간 자동 저장 |
@Enumerated | enum 타입 매핑 |
@Transient | 해당 필드 데이터베이스 매핑 무시 |
@Temporal | 날짜 타입 매핑 |
@CreateDate | 엔티티가 생성되어 저장될 때 시간 자동 저장 |
@LastModifiedDate | 조화한 엔티티의 값을 변경할 때 시간 자동 저장 |
@Column 속성
테이블을 생성할 때 컬럼에는 다양한 조건들이 들어갑니다. 예를 들면 문자열을 저장하는 VARCHAR 타입은 길이를 설정할 수 있고, 테이블에 데이터를 넣을 때 데이터가 항상 존재해야 하는 Not Null조건 등이 있습니다.@Column 어노테이션의 속성을 이용하면 테이블에 매핑되는 컬럼의 이름,문자열의 최대 저장 길이 등 다양한 제약 조건들을 추가할 수 있습니다.
속성 | 설명 | 기본값 |
name | 필드와 매핑할 컬럼의 이름 설정 | 객체의 필드 이름 |
unique(DDL) | 유니크 제약 조건 설정 | |
insertable | insert 가능 여부 | true |
updatable | update가능 여부 | true |
length | String 타입의 문자 길이 제약조건 설정 | |
nullable(DDL) | null 값의 허용 여부 설정.false 설정 시 DDL 생성 시에 not null제약조건 추가 | |
columnDefinition | 데이터베이스 컬럼 정보 직접 기술 예 @Column(columnDefinition = "varchar(5) default'10' not null") |
|
precision,scale(DDL) | BigDecimal타입에서 사용(BigInteger 가능) precision은 소수점을 포함한 전체 자리수이고, scale은 소수점 자리수. Double 과 float 타입에는 적용되지 않음 |
DDL 의 의미
DDL이란 테이블,스키마,인덱스,뷰,도메인을 정의, 변경,제거할 때 사용하는 언어 입니다.
가령,테이블을 생성하거나 삭제하는 CREATE,DROP 등이 이에 해당합니다.
@Entity 어노테이션은 클래스의 상단에 입력하면JPA에 엔티티 클래스라는 것을 알려줍니다.
Entity클래스는 반드시 기본키를 가져야 합니다 @Id 어노테이션을 이용하여 id 멤버 변수를 상품 테이블의
기본키로 설정합니다. @GeneratedValue 어노테이션을 통한 기본키를 생성하는 전략은 총 4가지가 있습니다.
생성 전략 | 설명 |
GenerationType.AUTO(default) | JPA 구현체가 자동으로 생성 전략 결정 |
GenerationType.IDENTITY | 기본키 생성을 데이터베이스에 위임 예)MySQL 데이터베이스의 경우 AUTO_INCREMENT를 사용하여 기본키 생성 |
GenerationType.SEQUENCE
|
데이터베이스 시퀸스 오브젝트를 이용한 기본키 생성 @SequenceGenerator를 사용하여 시퀸스 등록 필요 |
GenerationType.TABLE | 키 생성용 테이블 사용 @TableGenerato 필요 |
전략이라는 단어는 기본키를 생성하는 방법이라고 생각하면 편합니다
MYSQL에서 AUTO _INCREMENT를 이용해 데이터베이스에 INSERT 쿼리문을 보내면 자동으로 기본키 값을 증가시킬 수 있습니다. SEQUENC의 경우 기본키의 초기값,최댓값,최솟값을 지정할 수 있습니다.
기본키를 생성하는 다양한 방법을 JPA에서 지정해 줄 수 있습니다.
기본키와 데이터베이스 시퀸스 오브젝트의 의미
기본키(primary key)는 데이터베이스에서 조건을 만족하는 튜플을 찾을 때 다른 튜플들과 유일하게 구별할수 있도록 기준을 세워주는 속성 입니다. 예를들어서 상품 데이터를 찾을 때 삼품의 id르르 통해서 다른 상품들과 구별을 할 수 있습니다.
여기서 기본키는 id 입니다.
데이터베이스 시퀸스 오브젝트에서 시퀸스란 순차적으로 증가하는 값을 반환해주는 데이터베이스 객체입니다.
보통 기본키의 중복값으르 방지하기 위해서 사용합니다.
'Spring > Spring JPA' 카테고리의 다른 글
Auditing을 이용한 엔티티 공통 속성 공통화 (0) | 2023.03.06 |
---|---|
영속성 전이 (0) | 2023.03.06 |
연관 관계 매핑 종류 (1) | 2023.03.05 |
@Query (0) | 2023.03.02 |
JPA (0) | 2023.02.28 |