객체 - Table 매핑: @Entity
, @Table
field - column 매핑: @Column
기본 키 매핑: @Id
, @GeneratedValue
연관 관계 매핑: @ManyToOne
, @OneToMany
, @ManyToOne
사용 어노테이션:
@Entity
,@Table
@Entity
@Entity
가 붙은 클래스는 JPA가 관리
@Entity
사용 시 기본 생성자 필수@Entity
사용할 수없는 클래스 목록@Entity(name = "hello")
@Table
@Table
은 엔티티와 매핑할 DB 테이블 지정
@Table
없으면 @Entity
의 이름 따라 테이블 매핑속성 정리
속성 | 설명 | 기본 값 |
---|---|---|
name | 매핑할 테이블 이름 | 엔티티 이름 |
catalog | DB의 catalog 매핑 | |
schema | DB의 schema 매핑 | |
uniqueConstraints(DDL) | DDL 생성 시 유니크 제약 조건 생성 |
사용 어노테이션:
@Column
,@Temporal
,@Enumerated
,@Lob
,@Transient
@Column
@Column(name = "username")
private String name;
속성 정리
속성 | 설명 | 기본 값 |
---|---|---|
name | 필드와 매핑할 테이블의 컬럼 이름 | 객체 필드 이름 |
insertable updateable | 등록, 변경 가능 여부 false로 설정 시 등록, 변경 불가 | true |
nullable (DDL) | null 값 허용 여부 false로 설정 시 DDL 생성 시에 not null 제약 조건 붙음 | true |
unique (DDL) | @Table 의 uniqueConstraints 속성과 같지만 단일 컬럼에만 적용 가능 DDL 생성 시 유니크 제약조건 이름 랜덤으로 설정 | flase |
columnDefinition | DB의 컬럼 정보 직접 줄 수 있음 ex. colmunDefinition=”varchar(100) default EMPTY”) | |
length (DDL) | 문자 길이 제약 조건, String 타입에만 사용 가능 | |
precision, scale (DDL) | 아주 큰 숫자나 정밀한 소수 다룰 때 사용 BigDecimal, BigInteger 사용 가능 double, float 타입 적용 X percision: 소수점을 포함한 전체 자릿수 scale:소수의 자리수 ex. @Column(precisioin=0) |
@Enumerated
enum 타입 매핑할 때 사용
@Enumerated(value = EnumType.STRING)
private Location location;
속성 정리
속성 | 설명 | 기본 값 |
---|---|---|
vlaue | - EnumType.ORDINAL: enum 순서 저장(int) - EnumType.STRING: enum 이름 저장(string) | EnumType.ORDINAL |
@Tempoarl
날짜 타입 매핑할 때 사용
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
//@Temporal 생략 가능!
private LocalDate createDate2
속성 정리
속성 | 설명 | 예시 |
---|---|---|
value | - TemporalType.DATE: 날짜, DB의 date 타입과 매핑 - TemporalType.TIME: 시간, DB의 time 타입과 매핑 - TemporalType.TIMESTAMP: 날짜와 시간, DB의 timestamp 타입과 매핑 | 2021-01-01 11:01:20 2023-01-01 12:01:45 |
@Lob
대형 오브젝트 저장할 때 사용
@Lob
private String description;
@Lab
어노테이션은 속성 x@Transient
메모리에 임시로 보관하고 싶을 때 사용
@Transient
private Integer temp;