web-dev-qa-db-ja.com

JPAの@ javax.persistence.Lobアノテーションの意味は何ですか?

JPAで@javax.persistence.Lobアノテーションを使用する場合この注釈で注釈を付けることができるデータ型は何ですか?

25
dev ツ

@javax.persistence.Lobは、注釈付きフィールドがデータベースでBLOB(バイナリデータ)として表されることを示します。

この注釈を使用して、Serializableデータ型に注釈を付けることができます。 JPAでは、永続化(取得)時に、フィールドのコンテンツは標準Javaシリアル化を使用してシリアル化(逆シリアル化)されます。

@Lobの一般的な使用法は、エンティティ内のHashMapフィールドに注釈を付けて、DB列にマッピングされないオブジェクトプロパティの一部を保存することです。これにより、マッピングされていないすべての値を、バイナリ表現の1つの列のDBに保存できます。もちろん、支払われる価格は、バイナリ形式で保存されているため、JPQL/SQLを使用して検索できないということです。

29
Zielu

準拠: https://docs.Oracle.com/javaee/7/api/javax/persistence/Lob.html

@ Lob永続プロパティまたはフィールドを、データベースでサポートされるラージオブジェクトタイプのラージオブジェクトとして永続化することを指定します。

@ javax.persistence.Lobは、注釈付きフィールドがデータベース内でBLOB(バイナリデータ)として表されることを意味します。

データベースでは、バイナリデータだけでなく、文字ベースでもあると思います。 BLOBとCLOBを使用できたため。 Javaコードの例:

@Lob
@Column(name = "CHARS", columnDefinition = "CLOB")
private String chars;`

@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DATA", columnDefinition = "BLOB", nullable = false)
private byte[] data;
11
levrun