[JPA] Entity Mapping Annotation

호근·2023년 2월 14일
0

JPA

목록 보기
1/1

1. @Entity

@Entity 해당 클래스를 DB테이블과 매핑


2. @Table

엔티티와 매핑할 테이블을 지정

propertydescription
name매핑할 테이블 이름
catalogcatalog 기능이 있는 DB에서 catalog 매핑
schemaschema 기능이 있는 DB에서 schema 매핑
uniqueContraintsDDL생성 시 Unique 제약조건 생성
※ 스키마 자동생성 기능을 사용하여 DDL을 만들 때만 사용함.

3. @Id

특정 속성을 기본키로 설정하는 어노테이션

@Id만 적을 경우 기본 키를 직접 부여해야함.

@GeneratedValue 어노테이션을 사용하면 기본값을 DB에서 자동으로 생성할 수 있음.

propertyfunction
@GeneratedValue(strategy=GenerationType.IDENTITY)기본키 생성을 DB에 위임(MySQL)
@GeneratedValue(strategy=GenerationType.SEQUENCE)DB시퀀스를 사용하여 기본 키 할당(Oracle)
@GeneratedValue(strategy=GenerationType.TABLE)키 생성 테이블 사용(모든 DB)
@GeneratedValue(strategy=GenerationType.AUTO)선택된 DB에 따라 자동으로 전략선택

4. @Column

필드속성을 지정할 때 사용

propertydescriptiondefault
name필드명을 지정객체의 필드이름
insertable등록가능여부true
updatable수정가능여부true
nullableDDL 생성 시 설정값에 따라 null가능 여부를 설정true
uniqueDDl 생성 시 간단하게 한 컬럼에 유니크 제약 조건 설정false
columnDefinition테이블 컬럼 속성을 직접 설정-
length문자길이 제약조건 설정255
precision,scaleBigDeciaml, BigInteger 타입에서 사용0,0

5. @Temporal

날짜 타입을 매핑할 때 사용

  • LocalDate, LocalDateTime 사용 시 생략가능

6. @Enumerated

자바 enum 타입을 매핑할 때 사용

이름descriptiondefault
valueEnumType.ORDINALEnumType.ORDINAL
valueEnumType.StringEnumType.ORDINAL

7. @Lob

데이터베이스 BLOB, CLOB타입과 매핑

8. @Transient

해당필드를 매핑하지 않음. (테이블과 연관없는 필드를 지정할 때 사용)

9. @OneToMany, @ManyToOne

연관관계 매핑에 관하여 따로 정리하겠음.

10. @Access

JPA가 엔티티 데이터에 접근하는 방식을 지정

접근방식기능
AccessType.FIELD필드에 직접 접근, 필드 접근 권한이 private여도 접근 가능
AccessType.PROPERTYgetter를 통해 접근
profile
22.11.28 ~

0개의 댓글