@Entity
@Table(name = "hotel_info")
public class Hotel {
@Id
@Column(name="hotel_id")
private String id;
...
}
public static void main(String[] args) {
EMF.init();
// 저장하기 전에 생성자 할당 , 보통 생성 시점에 전달함.
Hotel entity = new Hotel("H-01" ,"말" ,2022 , Grade.S5);
save(entity);
...
}
AUTO
속성으로 지정된다. @GeneratedValue(strategy = GenerationType.AUTO)
dialect 값에 따라서 기본키 자동 생성 전략이 지정된다.
ex) mysql : auto_increment, oracle : sequence ...
@GeneratedValue(strategy = GenerationType.IDENTITY)
tx.begin();
// 시퀀스 사용 방식
// 생성 시점에 식별자를 지정하지 않음
ActivityLog log = new ActivityLog("U01" ,"VISIT");
logger.info("persist 실행 전");
// persist() 시점에 시퀀스로 식별자 구함
em.persist(log);
logger.info("persist 실행 함.");
logger.info("생성한 식별자: {}" ,log.getId());
logger.info("커밋하기 전.");
// 커밋 시점에 INSERT 쿼리 실행
tx.commit();
logger.info("커밋함.");
출처
[JPA] 기본 키(Primary Key)매핑 - @Id, @GeneratedValue JPA & Hibernate
https://ttl-blog.tistory.com/123#%40SequenceGenerator%20%EC%86%8D%EC%84%B1-1
[JPA] 기본키 자동 생성 전략(Primary Key)
https://bamdule.tistory.com/243