private byte[] uuidToByteArray(UUID id) {
String uuidToHexString = id.toString().replace("-", "");
return hexStringToByteArray(uuidToHexString);
}
public byte[] hexStringToByteArray(String hexString) {
int len = hexString.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ Character.digit(hexString.charAt(i+1), 16));
}
return data;
}
- 위와 같이 자바 코드를 이용하여 UUID 값을 변환해서 BINARY(16) 컬럼에 저장하면 H2 등 MYSQL이 아닌 DB에서도 굳이
UUID_TO...
과 같은 특정 DB에 종속적인 SQL을 사용하지 않고 저장이 가능합니다.
hexStringToByteArray
의 경우 아래의 방법과 서로 다른 출력을 하는데,
return hexString.getBytes(StandardCharsets.UTF_8);
bytes = [B@67c27493
bytes = [B@1a482e36왜 이런 결과가 나왔는지, 추후 찾아봐야겠습니다.별개로 처음 소개드린 방식 사용시 UUID(byteBuffer.getLong(), byteBuffer.getLong())
방식으로 얻은 바우처 byte값을 전환하는 것과 호환됩니다.