객체 - 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)  | 
@Enumeratedenum 타입 매핑할 때 사용
@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;