sql >> データベース >  >> RDS >> Mysql

JavaでUUIDをbinary(16)として保存する方法

    バイトとして保存してみてください:

    UUID uuid = UUID.randomUUID();
    byte[] uuidBytes = new byte[16];
    ByteBuffer.wrap(uuidBytes)
            .order(ByteOrder.BIG_ENDIAN)
            .putLong(uuid.getMostSignificantBits())
            .putLong(uuid.getLeastSignificantBits());
    
    con.createQuery("INSERT INTO TestTable(ID, Name) VALUES(:id, :name)")
        .addParameter("id", uuidBytes)
        .addParameter("name", "test1").executeUpdate();
    

    少し説明します。テーブルはBINARY(16)を使用しているため、UUIDを生のバイトとしてシリアル化するのは非常に簡単な方法です。 UUIDは基本的に128ビット整数であり、いくつかの予約ビットがあるため、このコードはそれをビッグエンディアンの128ビット整数として書き出します。 ByteBufferは、2つのlongをバイト配列に変換する簡単な方法です。

    現在、実際には、すべての変換作業と頭痛の種は、1行あたり20バイト節約する価値はありません。




    1. Moodleのパフォーマンスをベンチマークする方法

    2. データの配列からOptgroupを作成する

    3. 可能なPostgres行ロックを解放する方法は?

    4. SQLServer2008の空の文字列とスペース