@Entity가 붙은 클래스는 JPA가 관리하며 테이블과 매핑할 것을 JPA에게 알려줌
주의할 사항
public, protected 기본 생성자 필수
final 클래스, enum 클래스, interface, inner 클래스에 사용 불가
저장할 field에 final 사용 불가
DB에 상관없이 메모리에서만 사용 → DB에 저장, 조회가 불가능
java에서도 직렬화하는 과정에서 제외하고 싶은 경우 사용하는 키워드
직접할당할 경우 → @Id 어노테이션만 사용
⭐️ 자동 생성할 경우
IDENTITY
auto_increment는 DB에 INSERT SQL을 실행한 이후에 값을 알 수 있음 → IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL을 실행하고 DB에서 식별자를 조회SEQUENCE
@Entity
@SequenceGenerator(
name="USER_SEQ_GEN", //시퀀스 제너레이터 이름
sequenceName="USER_SEQ", //시퀀스 이름
initialValue=1, //시작값
allocationSize=1 //메모리를 통해 할당할 범위 사이즈
)
public class User {
@Id
@GeneratedValue(
strategy=GenerationType.SEQUENCE, //사용할 전략을 시퀀스로 선택
generator="USER_SEQ_GEN" //식별자 생성기를 설정해놓은 USER_SEQ_GEN으로 설정
)
private Long id;
}
**create squence USER_SEQ start with 1 increment by 1;**
TABLE
AUTO
⭐️ 객체를 테이블에 맞추어 데이터 중심적으로 설계를 하면 협력 관계를 만들 수 없음