org.springframework.data.relational.core.conversion

## Interface RelationalConverter

All Known Implementing Classes:
  BasicRelationalConverter

    public interface RelationalConverter

A `RelationalConverter` is responsible for converting for values to the native relational representation and vice versa.

Author:
  Mark Paluch, Jens Schauder

### Method Summary

All Methods Instance Methods Abstract Methods
`<T> T` `createInstance(PersistentEntity<T,RelationalPersistentProperty> entity, Function<PreferredConstructor.Parameter<?,RelationalPersistentProperty>,Object> parameterValueProvider)` Create a new instance of `PersistentEntity` given `ParameterValueProvider` to obtain constructor properties.
`ConversionService` `getConversionService()` Returns the underlying `ConversionService` used by the converter.
`MappingContext<? extends RelationalPersistentEntity<?>,? extends RelationalPersistentProperty>` `getMappingContext()` Returns the underlying `MappingContext` used by the converter.
`<T> PersistentPropertyAccessor<T>` `getPropertyAccessor(PersistentEntity<T,?> persistentEntity, T instance)` Return a `PersistentPropertyAccessor` to access property values of the `instance`.
`Object` `readValue(Object value, TypeInformation<?> type)` Read a relational value into the desired `destination type`.
`Object` `writeValue(Object value, TypeInformation<?> type)` Write a property value into a relational type that can be stored natively.

### Method Detail

#### getMappingContext

    MappingContext<? extends RelationalPersistentEntity<?>,? extends RelationalPersistentProperty> getMappingContext()

Returns the underlying `MappingContext` used by the converter.

Returns:
  never null

#### getConversionService

    ConversionService getConversionService()

Returns the underlying `ConversionService` used by the converter.

Returns:
  never null.

#### createInstance

    <T> T createInstance(PersistentEntity<T,RelationalPersistentProperty> entity,
                         Function<PreferredConstructor.Parameter<?,RelationalPersistentProperty>,Object> parameterValueProvider)

Create a new instance of `PersistentEntity` given `ParameterValueProvider` to obtain constructor properties.

Type Parameters:
  `T` - the type of entity to create.
Parameters:
  `entity` - the kind of entity to create. Must not be `null`.
  `parameterValueProvider` - a function that provides the value to pass to a constructor, given a `PreferredConstructor.Parameter`. Must not be `null`.
Returns:
  the instantiated entity. Guaranteed to be not `null`.

#### getPropertyAccessor

    <T> PersistentPropertyAccessor<T> getPropertyAccessor(PersistentEntity<T,?> persistentEntity,
                                                          T instance)

Return a `PersistentPropertyAccessor` to access property values of the `instance`.

Parameters:
  `persistentEntity` - the kind of entity to operate on. Must not be `null`.
  `instance` - the instance to operate on. Must not be `null`.
Returns:
  guaranteed to be not `null`.

#### readValue

    @Nullable
    Object readValue(@Nullable
                               Object value,
                               TypeInformation<?> type)

Read a relational value into the desired `destination type`.

Parameters:
  `value` - a value as it is returned by the driver accessing the persistence store. May be `null`.
  `type` - `TypeInformation` into which the value is to be converted. Must not be `null`.
Returns:
  The converted value. May be `null`.

#### writeValue

    @Nullable
    Object writeValue(@Nullable
                                Object value,
                                TypeInformation<?> type)

Write a property value into a relational type that can be stored natively.

Parameters:
  `value` - a value as it is used in the object model. May be `null`.
  `type` - `TypeInformation` into which the value is to be converted. Must not be `null`.
Returns:
  The converted value. May be `null`.