@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
⭐️ 객체를 테이블에 맞추어 데이터 중심적으로 설계를 하면 협력 관계를 만들 수 없음