com.vladmihalcea.hibernate.type.json
Class JsonType

java.lang.Object
  extended by org.hibernate.type.AbstractStandardBasicType<T>
      extended by org.hibernate.type.AbstractSingleColumnStandardBasicType<T>
          extended by com.vladmihalcea.hibernate.type.AbstractHibernateType<Object>
              extended by com.vladmihalcea.hibernate.type.json.JsonType
All Implemented Interfaces:
Serializable, org.hibernate.type.BasicType, org.hibernate.type.ProcedureParameterExtractionAware<Object>, org.hibernate.type.SingleColumnType<Object>, org.hibernate.type.StringRepresentableType<Object>, org.hibernate.type.Type, org.hibernate.type.XmlRepresentableType<Object>, org.hibernate.usertype.DynamicParameterizedType, org.hibernate.usertype.ParameterizedType

public class JsonType
extends AbstractHibernateType<Object>
implements org.hibernate.usertype.DynamicParameterizedType

JsonType allows you to map any given JSON object (e.g., POJO, Map<String, Object>, List<T>, JsonNode) on any of the following database systems:

If you switch to Oracle 21c from an older version, then you should also migrate your JSON columns to the native JSON type since this binary type performs better than VARCHAR2 or BLOB column types.

However, if you don't want to migrate to the new JSON data type, then you just have to provide the column type via the JPA Column.columnDefinition() attribute, like in the following example:

 @Type(type = "com.vladmihalcea.hibernate.type.json.JsonType")
 @Column(columnDefinition = "VARCHAR2")
 

For more details about how to use the JsonType, check out this article on vladmihalcea.com.

If you are using Oracle and want to store JSON objects in a BLOB column type, then you can use the JsonBlobType instead. For more details, check out this article on vladmihalcea.com.

Or, you can use the JsonType, but you'll have to specify the underlying column type using the JPA Column.columnDefinition() attribute, like this:

 @Type(type = "com.vladmihalcea.hibernate.type.json.JsonType")
 @Column(columnDefinition = "BLOB")
 

Author:
Vlad Mihalcea
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.hibernate.usertype.DynamicParameterizedType
org.hibernate.usertype.DynamicParameterizedType.ParameterType
 
Field Summary
static JsonType INSTANCE
           
 
Fields inherited from interface org.hibernate.usertype.DynamicParameterizedType
ACCESS_TYPE, ENTITY, IS_DYNAMIC, IS_PRIMARY_KEY, PARAMETER_TYPE, PROPERTY, RETURNED_CLASS, XPROPERTY
 
Constructor Summary
JsonType()
           
JsonType(Configuration configuration)
           
JsonType(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
           
JsonType(com.fasterxml.jackson.databind.ObjectMapper objectMapper, Type javaType)
           
JsonType(ObjectMapperWrapper objectMapperWrapper)
           
JsonType(ObjectMapperWrapper objectMapperWrapper, Type javaType)
           
JsonType(Type javaType)
           
 
Method Summary
 String getName()
           
 void setParameterValues(Properties parameters)
           
 
Methods inherited from class com.vladmihalcea.hibernate.type.AbstractHibernateType
getConfiguration
 
Methods inherited from class org.hibernate.type.AbstractSingleColumnStandardBasicType
nullSafeSet, sqlType
 
Methods inherited from class org.hibernate.type.AbstractStandardBasicType
assemble, beforeAssemble, canDoExtraction, compare, deepCopy, deepCopy, defaultSizes, dictatedSizes, disassemble, extract, extract, fromString, fromStringValue, fromXMLNode, fromXMLString, get, getColumnSpan, getDefaultSize, getDictatedSize, getHashCode, getHashCode, getJavaTypeDescriptor, getMutabilityPlan, getRegistrationKeys, getReplacement, getReturnedClass, getSemiResolvedType, getSqlTypeDescriptor, hydrate, isAnyType, isAssociationType, isCollectionType, isComponentType, isDirty, isDirty, isDirty, isEntityType, isEqual, isEqual, isModified, isMutable, isSame, isXMLElement, nullSafeGet, nullSafeGet, nullSafeGet, nullSafeGet, nullSafeSet, nullSafeSet, registerUnderJavaType, remapSqlTypeDescriptor, replace, replace, resolve, semiResolve, set, setJavaTypeDescriptor, setSqlTypeDescriptor, setToXMLNode, sqlTypes, toColumnNullness, toLoggableString, toString, toXMLString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.hibernate.type.SingleColumnType
fromStringValue, get, nullSafeGet, set, toString
 
Methods inherited from interface org.hibernate.type.Type
assemble, beforeAssemble, compare, deepCopy, defaultSizes, dictatedSizes, disassemble, fromXMLNode, getColumnSpan, getHashCode, getHashCode, getReturnedClass, getSemiResolvedType, hydrate, isAnyType, isAssociationType, isCollectionType, isComponentType, isDirty, isDirty, isEntityType, isEqual, isEqual, isModified, isMutable, isSame, isXMLElement, nullSafeGet, nullSafeGet, nullSafeSet, replace, replace, resolve, semiResolve, setToXMLNode, sqlTypes, toColumnNullness, toLoggableString
 

Field Detail

INSTANCE

public static final JsonType INSTANCE
Constructor Detail

JsonType

public JsonType()

JsonType

public JsonType(Type javaType)

JsonType

public JsonType(Configuration configuration)

JsonType

public JsonType(com.fasterxml.jackson.databind.ObjectMapper objectMapper)

JsonType

public JsonType(ObjectMapperWrapper objectMapperWrapper)

JsonType

public JsonType(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                Type javaType)

JsonType

public JsonType(ObjectMapperWrapper objectMapperWrapper,
                Type javaType)
Method Detail

getName

public String getName()
Specified by:
getName in interface org.hibernate.type.Type

setParameterValues

public void setParameterValues(Properties parameters)
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType


Copyright © 2022. All rights reserved.