스프링 부팅 시 최대 절전 모드를 사용하여 자동 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
'source' 카테고리의 다른 글
특정 값을 포함하지 않는 배열을 가진 문서 찾기 (0) | 2023.06.25 |
---|---|
MongoDB(MongoDB+Node js 콤보)에 삽입하기 전에 사용자 입력을 검사해야 합니까? (0) | 2023.06.25 |
Oracle sqlplus에서 sql 스크립트의 실행 시간 가져오기 (0) | 2023.06.25 |
코드와 비교하여 자바 메이븐 스프링 부트 앱을 디버깅하는 방법은 무엇입니까? (0) | 2023.06.25 |
비트 버킷에서 분기 삭제 (0) | 2023.06.25 |