@Entity, @Table @Column, @Temporal, @Enumerated, @Lob, @Transient @Id, @GeneratedValue@ManyToOne, @JoinColumn, insertable namenamecatalogschemauniqueConstraints (DDL)create : 기존 table 삭제 후 생성create-drop : create 같음 + 종료시점에 table 삭제update : 변경 부분만 반영validate : mapping이 정상적인지만 확인none : 사용 x create or updateupdate or validatevalidate or none@Column : 컬럼 mapping@Temporal : 날짜 타입 mapping@Enumerated : enum 타입 mapping@Lob : BLOB, CLOB mapping@Transient : mapping 무시@Column 속성 name insertable updatablenullable(DDL)unique(DDL)columnDefinition (DDL)length(DDL)precisionscale(DDL)@Enumerated 속성EnumType.ORDINAL : enum 순서를 저장EnumType.STRING : enum 이름을 저장 EnumType.STRING의 사용의 필요성 @Temporal 속성 TemporalType.DATE : 날짜TemporalType.TIME : 시간TemporalType.TIMESTAMP : 날짜와 시간@Lob 속성CLOB : String, char[], java.sql.CLOBBLOB : BLOB: byte[], java.sql. BLOB@Id@GeneratedValue자동 생성
@GeneratedValue
IDENTITY MySQL, PostgreSQL, SQL Server, DB2commit()하기 전에 persist()만 하더라도 DB에 쿼리를 보냄.SEQUENCE오라클, PostgreSQL, DB2, H2persist()시에 DB에서 시퀀스를 먼저 가져와야함. @SequenceGenerator로 시퀀스를 관리할 수 있음. name : 이름sequenceName : initialValue : allocationSize : 시퀀스 호출당 증가 수 catalog : DB catalog 이름schema : DB schema 이름 TABLE@TableGenerator로 테이블을 관리할 수 있음. name : 이름table : 키를 생성하는 테이블 명 pkColumnName : 시퀀스 컬럼명valueColumnNa : 시퀀스 값 컬럼명pkColumnValue : 키로 사용할 값 이름initialValue : 초기 값allocationSize: 시퀀스 호출당 증가 수 catalog : DB catalog 이름schema : DB schema 이름 uniqueConstraints(DDL) : 유니크 제약 조건AUTO식별자 전략 사항
성능위한 파라미터 allocationSize
persist()시 식별자를 구하기 위해 DB의 시퀀스를 두 번 호출 -> 1, 1 + allocationSizeallocationSize는 JPA가 메모리에서 관리할 범위 allocationSize만큼을 다시 DB 시퀀스 호출