사용자 도구

사이트 도구


java:hibernate:id_generator

Hibernate Primary Key (ID) Generator

hibernate.id.new_generator_mappings

UUID

  • UUID ID 는 기본적으로 Binary로 매핑된다.
  • 또한 ID Generator는 UUIDGenerater를 사용한다.
  • 해당 컬럼을 문자열로 지정하고 싶다면 @Type(type=“uuid-char”)를 붙인다.

기본 Custom Generator들

Sequence에 대한 변화

  • 기존방식 : SequenceHiLoGenerator ID 생성시 모든 ID마다 Sequence 생성 호출
  • 새 방식 : SequenceStyleGenerator 새로운 Sequence ID 생성방식. 한번 호출로 여러 Sequence를 생성하여 최적화하는 듯. 좀 더 확인 필요.

Table Generator에 대한 변화

Identity (Auto Increment)

@Entity
public class EntityWithIdentityId {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY) Long id;
     :
}
  • DB에서 ID 값을 읽어와야만 Persistence Context 에 저장가능하기 때문에, 객체 생성후 persist() 즉시 commit을 하지 않아도 DB 저장이 일어난다.

Sequence

@Entity
// Define a sequence - might also be in another class:
@SequenceGenerator(name="seq", initialValue=1, allocationSize=100)
public class EntityWithSequenceId {
    // Use the sequence that is defined above:
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
    @Id Long id;
}

Table

@Entity
@TableGenerator(name="tab", initialValue=0, allocationSize=50)
public class EntityWithTableId {
    @GeneratedValue(strategy=GenerationType.TABLE, generator="tab")
    @Id Long id;
}

IdGenerator

참조

java/hibernate/id_generator.txt · 마지막으로 수정됨: 2023/06/09 10:02 저자 kwon37xi