Interface BasicUserType<X>
- Type Parameters:
X- The type of the user type
- All Superinterfaces:
BasicUserTypeStringSupport<X>
- All Known Subinterfaces:
VersionBasicUserType<X>
- All Known Implementing Classes:
AbstractMutableBasicUserType,ImmutableBasicUserType,MutableBasicUserType
A contract for defining a custom basic type to use with entity views.
- Since:
- 1.2.0
- Author:
- Christian Beikov
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String[]The object to return fromgetDirtyProperties(Object)when unsure what properties are dirty. -
Method Summary
Modifier and TypeMethodDescriptionClones the given object if the type is mutable to be able to detect mutations.String[]getDirtyProperties(X object) Returns the nested properties of the object that are known to be dirty.intReturns the hash code of the object for lookups in hash based collections.booleanisDeepEqual(X object1, X object2) Returnstrueif the given objects are equal regarding their values.booleanReturnstrueif the given objects are equal regarding their identity.booleanReturnstrueif the type is mutable,falseotherwise.booleanshouldPersist(X entity) Returnstrueif the given entity object should be persisted.booleanReturnstrueif the type supports creating deep clones,falseotherwise.booleanReturnstrueif the type supports checking deep equality,falseotherwise.booleanReturnstrueif the type supports dirty checking,falseotherwise.booleanReturnstrueif the type supports dirty tracking,falseotherwise.Methods inherited from interface com.blazebit.persistence.view.spi.type.BasicUserTypeStringSupport
fromString, toStringExpression
-
Field Details
-
DIRTY_MARKER
The object to return fromgetDirtyProperties(Object)when unsure what properties are dirty.
-
-
Method Details
-
isMutable
boolean isMutable()Returnstrueif the type is mutable,falseotherwise.- Returns:
- true if mutable, false otherwise
-
supportsDirtyChecking
boolean supportsDirtyChecking()Returnstrueif the type supports dirty checking,falseotherwise. This is only relevant when the type is also mutable.- Returns:
- true if dirty checking is supported, false otherwise
-
supportsDirtyTracking
boolean supportsDirtyTracking()Returnstrueif the type supports dirty tracking,falseotherwise. Support for dirty tracking implies that the type implements theBasicDirtyTrackerinterface. This is only relevant when the type is also mutable. Note that if this method returns true, thesupportsDirtyChecking()method should also return true.- Returns:
- true if dirty tracking is supported, false otherwise
-
supportsDeepEqualChecking
boolean supportsDeepEqualChecking()Returnstrueif the type supports checking deep equality,falseotherwise. Deep equality checking, in contrast to normal equality checking, compares objects by their actual values rather than maybe just their identity. For value types, deep equality checking is the same as normal equality checking.- Returns:
- true if deep equality checking is supported, false otherwise
-
supportsDeepCloning
boolean supportsDeepCloning()Returnstrueif the type supports creating deep clones,falseotherwise. Deep clones are only necessary for mutable types that don't support dirty checking. Immutable types can simply returntrue.- Returns:
- true if deep cloning is supported, false otherwise
-
isEqual
Returnstrueif the given objects are equal regarding their identity. For value types, this is the same as deep equality checking.- Parameters:
object1- The first objectobject2- The second object- Returns:
- true if the objects are equal, false otherwise
-
isDeepEqual
Returnstrueif the given objects are equal regarding their values. If deep equality is not supported, returns false.- Parameters:
object1- The first objectobject2- The second object- Returns:
- true if the objects are equal, false otherwise
-
hashCode
Returns the hash code of the object for lookups in hash based collections.- Parameters:
object- The object- Returns:
- the hash code of the object
-
shouldPersist
Returnstrueif the given entity object should be persisted. This is invoked for user types where the typeTis an entity type. If the type is not an entity type, returns false.- Parameters:
entity- The entity for which to determine whether it should be persisted- Returns:
- true if the entity should be persisted, false otherwise
-
getDirtyProperties
Returns the nested properties of the object that are known to be dirty. If the object isn't dirty i.e. doesn't need flushing,nullis returned. If the properties that are dirty aren't known or the type doesn't have nested properties, an empty array or DIRTY_MARKER is returned.- Parameters:
object- The object for which to determine the dirty properties- Returns:
- the dirty properties of the object
-
deepClone
Clones the given object if the type is mutable to be able to detect mutations. Immutable types may return the object itself. Types that can't be cloned easily can return the object too, but should make sure, that the deep equality check always returnsfalseor dirty checking is properly supported.- Parameters:
object- The object to clone- Returns:
- The cloned object
-