목록 보기
JPA 덕분에 DB에서 삽질한 이야기
백엔드

JPA 덕분에 DB에서 삽질한 이야기

마켓컬리
마켓컬리
2020년 7월 5일

두줄요약

UUID를 BINARY(255)에 저장해 조회가 실패한 원인을 MySQL 우측 패딩에서 찾았습니다. UUID 크기에 맞춰 BINARY(16)으로 변경하고 H2·MySQL 차이도 확인했습니다.

문제 상황

  • UUID를 ID로 저장한 뒤 동일 UUID 기반 findById 조회 실패
  • H2 인메모리 DB 테스트와 개발 MySQL DB 테스트 간 상이한 결과

원인 분석

  • Hibernate의 UUID 바이너리 저장 방식과 UUID의 16바이트 크기
  • MySQL BINARY(255) 컬럼의 우측 패딩으로 저장값과 16바이트 조회 조건 간 불일치

해결 방법

  • UUID ID 컬럼 정의를 BINARY(16)으로 명시
  • @Column(columnDefinition = "BINARY(16)") 적용 후 UUID 조회 정상화

주의할 점

  • H2와 MySQL의 BINARY 타입 처리 차이를 포함한 테스트 환경 검증
  • UUID 바이너리 저장 시 컬럼 길이와 패딩 규칙 확인

다음 읽기

#JPA 주제를 이어서 읽기

JPA 덕분에 DB에서 삽질한 이야기

UUID를 `BINARY(255)`에 저장하면서 MySQL 우측 패딩으로 조회가 실패한 원인을 분석했습니다. UUID 컬럼을 `BINARY(16)`으로 변경하고 SQL로 패딩 영향을 검증했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...