Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import javax.persistence.Lob;
Verinin java.sql.Types.BLOB veya java.sql.Types.CLOB olarak kaydedilmesini sağlar. Açıklaması şöyle. Eğer üye alan tipi String veya char ise java.sql.Types.CLOB seçilir, değilse java.sql.Types.BLOB seçilir.
Açıklaması şöyle. Üye alanın Serializable olması gerekir.Specifies that a persistent property or field should be persisted as a large object to a database-supported large object type. Portable applications should use the Lob annotation when mapping to a database Lob type. The Lob annotation may be used in conjunction with the Basic annotation or the ElementCollection annotation when the element collection value is of basic type. A Lob may be either a binary or character type.The Lob type is inferred from the type of the persistent field or property, and except for string and character-based types defaults to Blob.
@javax.persistence.Lob signifies that the annotated field should be represented as BLOB (binary data) in the DataBase.Üye Alan Tipi
You can annotate any serializable data type with this annotation. In JPA, upon persisting (retrieval) the field content will be serialized (deserialized) using standard Java serialization.
Common use of LOB is to annotate a HashMap field inside your Entity to store some of the object properties which are not mapped into DB columns. That way all the unmapped values can be stored in the DB in one column in their binary representation. Of course the price that is paid is that, as they are stored in binary format, they are not searchable using the JPQL/SQL.
Eğer portable kod istiyorsak üye alan String veya byte[] olmalıdır. Böylece herhangi bir JPA sağlayıcısını kullanabiliriz.
Veritabanı Sütun Tipi
Kullandığımız ORM bu tipi gerçek veri tabanı sütun tipine çevirir. Ancak veri tabanları arasında da farklılıklar var. Örneğin PostgreSQL oid sütun tipini kullanırken, Oracle kendi blob tipini kullanıyor.
annotation postgres oracle
-------------------------------------------------
byte[] + @Lob oid blob
Not : Hibernate'e Mahsus JPA @Lob Anotasyonu - PostgreSQL yazısına tababilirsiniz.Örnek - Oracle
Bazen veri tabanında kullanılacak sütun tipini özellikle belirtmek gerekir. Şöyle yaparız. CLOB ve BLOB Oracle sütun tipleridir.
@Lob
@Column(name = "CHARS", columnDefinition = "CLOB")
private String chars;`
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DATA", columnDefinition = "BLOB", nullable = false)
private byte[] data;
Lazy @Lob lazy değildir. Lazy olması için kodda bunu belirtmek gerekir.
Örnek
Şöyle yaparız.
@Basic(fetch = FetchType.LAZY)
@Lob
private String projectDescription = "";
ÖrnekŞöyle yaparız.
@Basic(fetch = FetchType.LAZY)
@Lob
@Column(length=5000)
private byte[] projectDescription1 =new byte[0];
Hiç yorum yok:
Yorum Gönder