source

스프링 부팅 시 최대 절전 모드를 사용하여 자동 UUID를 생성하는 방법

manycodes 2023. 6. 25. 20:15
반응형

스프링 부팅 시 최대 절전 모드를 사용하여 자동 UUID를 생성하는 방법

제가 달성하고자 하는 것은 DB 삽입 중에 자동으로 할당되는 UUID를 생성하는 것입니다.ID 값을 생성하는 "id"라는 기본 키 열과 유사합니다.

모델 값은 다음과 같습니다.

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private Long id;


@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "uuid", columnDefinition = "BINARY(16)")
private UUID uuid;

하지만 DB 삽입이 완료되면."context"가 비어 있습니다.

도움을 주셔서 대단히 감사합니다.그리고 제가 명백한 바보 같은 질문을 하고 있다면 죄송합니다.

한번 해 보시겠어요?

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", columnDefinition = "VARCHAR(255)")
    private UUID id;

@PrePersist와 같은 일부 이벤트를 사용하여 UUID 필드 https://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html 을 채울 수 있습니다.

하지만 개체가 생성될 때 uuid = UUID.random을 할당하지 않는 이유는 무엇입니까?UUID()?

프레임워크에 많은 변경 사항이 있으며 MySQL v5.7을 사용하여 Spring Boot 2.2.5에서 테스트한 바와 같이(2.0 버전 모두에서 작동해야 하지만 확인해야 함) UUID는 아래와 같이 자동 생성될 수 있습니다.

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id", insertable = false, updatable = false, nullable = false)
private UUID id;

이렇게 하면 압축 방식으로 이진 형식으로 저장할 수 있습니다(저장에 유용).어떤 이유로 인해 UUID를 Varchar 필드에 사람이 읽을 수 있도록 저장해야 하는 경우(대시 구분 값) 아래와 같이 수행할 수 있습니다.

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Type(type="uuid-char")
@Column(name="id", columnDefinition = "VARCHAR(255)", insertable = false, updatable = false, nullable = false)
private String id;

기본적으로 Hibernate는 이진 형식으로 UUID를 매핑하므로 형식을 변경하려면 유형 주석을 사용하여 힌트를 제공해야 합니다.

다음은 저에게 도움이 되었습니다.

@Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(
            name = "UUID",
            strategy = "org.hibernate.id.UUIDGenerator"
    )
    @Column(name = "id", updatable = false, nullable = false)
    private UUID id;

언급URL : https://stackoverflow.com/questions/45086957/how-to-generate-an-auto-uuid-using-hibernate-on-spring-boot

반응형