What is the significance of @javax.persistence.Lob annotation in JPA?

Dev picture Dev · Apr 8, 2015 · Viewed 36.1k times · Source

When should I use @javax.persistence.Lob annotation in JPA? What datatypes can be annotated by this annotation?

Answer

Zielu picture Zielu · Apr 8, 2015

@javax.persistence.Lob signifies that the annotated field should be represented as BLOB (binary data) in the DataBase.

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 binarry 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.