public class CascadingDataAccessStrategy extends Object implements DataAccessStrategy
DataAccessStrategy
s passed to the constructor in turn until the first that does
not throw an exception.Constructor and Description |
---|
CascadingDataAccessStrategy(List<DataAccessStrategy> strategies) |
Modifier and Type | Method and Description |
---|---|
long |
count(Class<?> domainType)
Counts the rows in the table representing the given domain type.
|
void |
delete(Object id,
Class<?> domainType)
Deletes a single row identified by the id, from the table identified by the domainType.
|
void |
delete(Object rootId,
PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
Deletes all entities reachable via propertyPath from the instance identified by rootId.
|
<T> void |
deleteAll(Class<T> domainType)
Deletes all entities of the given domain type.
|
void |
deleteAll(PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
Deletes all entities reachable via propertyPath from any instance.
|
<T> void |
deleteWithVersion(Object id,
Class<T> domainType,
Number previousVersion)
Deletes a single entity from the database and enforce optimistic record locking using the version property.
|
<T> boolean |
existsById(Object id,
Class<T> domainType)
returns if a row with the given id exists for the given type.
|
<T> Iterable<T> |
findAll(Class<T> domainType)
Loads all entities of the given type.
|
<T> Iterable<T> |
findAll(Class<T> domainType,
Pageable pageable)
Loads all entities of the given type, paged and sorted.
|
<T> Iterable<T> |
findAll(Class<T> domainType,
Sort sort)
Loads all entities of the given type, sorted.
|
<T> Iterable<T> |
findAllById(Iterable<?> ids,
Class<T> domainType)
Loads all entities that match one of the ids passed as an argument.
|
Iterable<Object> |
findAllByPath(Identifier identifier,
PersistentPropertyPath<RelationalPersistentProperty> path)
Finds all entities reachable via path.
|
<T> Iterable<T> |
findAllByProperty(Object rootId,
RelationalPersistentProperty property)
Finds all entities reachable via property from the instance identified by rootId.
|
<T> T |
findById(Object id,
Class<T> domainType)
Loads a single entity identified by type and id.
|
<T> Object |
insert(T instance,
Class<T> domainType,
Identifier identifier)
Inserts a the data of a single entity.
|
<T> Object |
insert(T instance,
Class<T> domainType,
Map<SqlIdentifier,Object> additionalParameters)
Inserts a the data of a single entity.
|
<S> boolean |
update(S instance,
Class<S> domainType)
Updates the data of a single entity in the database.
|
<S> boolean |
updateWithVersion(S instance,
Class<S> domainType,
Number previousVersion)
Updates the data of a single entity in the database and enforce optimistic record locking using the
previousVersion property. |
public CascadingDataAccessStrategy(List<DataAccessStrategy> strategies)
public <T> Object insert(T instance, Class<T> domainType, Map<SqlIdentifier,Object> additionalParameters)
DataAccessStrategy
insert
in interface DataAccessStrategy
T
- the type of the instance.instance
- the instance to be stored. Must not be null
.domainType
- the type of the instance. Must not be null
.additionalParameters
- name-value pairs of additional parameters. Especially ids of parent entities that need
to get referenced are contained in this map. Must not be null
.public <T> Object insert(T instance, Class<T> domainType, Identifier identifier)
DataAccessStrategy
insert
in interface DataAccessStrategy
T
- the type of the instance.instance
- the instance to be stored. Must not be null
.domainType
- the type of the instance. Must not be null
.identifier
- information about data that needs to be considered for the insert but which is not part of the
entity. Namely references back to a parent entity and key/index columns for entities that are stored in a
Map
or List
.public <S> boolean update(S instance, Class<S> domainType)
DataAccessStrategy
update
in interface DataAccessStrategy
S
- the type of the instance to save.instance
- the instance to save. Must not be null
.domainType
- the type of the instance to save. Must not be null
.public <S> boolean updateWithVersion(S instance, Class<S> domainType, Number previousVersion)
DataAccessStrategy
previousVersion
property. Referenced entities don't get handled.
The statement will be of the form : UPDATE … SET … WHERE ID = :id and VERSION_COLUMN = :previousVersion
and throw an optimistic record locking exception if no rows have been updated.
updateWithVersion
in interface DataAccessStrategy
S
- the type of the instance to save.instance
- the instance to save. Must not be null
.domainType
- the type of the instance to save. Must not be null
.previousVersion
- The previous version assigned to the instance being saved.public void delete(Object id, Class<?> domainType)
DataAccessStrategy
The statement will be of the form : DELETE FROM … WHERE ID = :id and VERSION_COLUMN = :version
and throw
an optimistic record locking exception if no rows have been updated.
delete
in interface DataAccessStrategy
id
- the id of the row to be deleted. Must not be null
.domainType
- the type of entity to be deleted. Implicitly determines the table to operate on. Must not be
null
.public <T> void deleteWithVersion(Object id, Class<T> domainType, Number previousVersion)
DataAccessStrategy
deleteWithVersion
in interface DataAccessStrategy
id
- the id of the row to be deleted. Must not be null
.domainType
- the type of entity to be deleted. Implicitly determines the table to operate on. Must not be
null
.previousVersion
- The previous version assigned to the instance being saved.public void delete(Object rootId, PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
DataAccessStrategy
delete
in interface DataAccessStrategy
rootId
- Id of the root object on which the propertyPath is based. Must not be null
.propertyPath
- Leading from the root object to the entities to be deleted. Must not be null
.public <T> void deleteAll(Class<T> domainType)
DataAccessStrategy
deleteAll
in interface DataAccessStrategy
T
- type of the domain type.domainType
- the domain type for which to delete all entries. Must not be null
.public void deleteAll(PersistentPropertyPath<RelationalPersistentProperty> propertyPath)
DataAccessStrategy
deleteAll
in interface DataAccessStrategy
propertyPath
- Leading from the root object to the entities to be deleted. Must not be null
.public long count(Class<?> domainType)
DataAccessStrategy
count
in interface DataAccessStrategy
domainType
- the domain type for which to count the elements. Must not be null
.null
.public <T> T findById(Object id, Class<T> domainType)
DataAccessStrategy
findById
in interface DataAccessStrategy
T
- the type of the entity.id
- the id of the entity to load. Must not be null
.domainType
- the domain type of the entity. Must not be null
.null
.public <T> Iterable<T> findAll(Class<T> domainType)
DataAccessStrategy
findAll
in interface DataAccessStrategy
T
- the type of entities to load.domainType
- the type of entities to load. Must not be null
.null
.public <T> Iterable<T> findAllById(Iterable<?> ids, Class<T> domainType)
DataAccessStrategy
findAllById
in interface DataAccessStrategy
T
- type of entities to load.ids
- the Ids of the entities to load. Must not be null
.domainType
- the type of entities to laod. Must not be null
.null
.public Iterable<Object> findAllByPath(Identifier identifier, PersistentPropertyPath<RelationalPersistentProperty> path)
RelationResolver
findAllByPath
in interface DataAccessStrategy
findAllByPath
in interface RelationResolver
identifier
- the combination of Id, map keys and list indexes that identify the parent of the entity to be
loaded. Must not be null.path
- the path from the aggregate root to the entities to be resolved. Must not be null.public <T> Iterable<T> findAllByProperty(Object rootId, RelationalPersistentProperty property)
DataAccessStrategy
findAllByProperty
in interface DataAccessStrategy
rootId
- Id of the root object on which the propertyPath is based.property
- Leading from the root object to the entities to be found.public <T> boolean existsById(Object id, Class<T> domainType)
DataAccessStrategy
existsById
in interface DataAccessStrategy
T
- the type of the entity.id
- the id of the entity for which to check. Must not be null
.domainType
- the type of the entity to check for. Must not be null
.true
if a matching row exists, otherwise false
.public <T> Iterable<T> findAll(Class<T> domainType, Sort sort)
DataAccessStrategy
findAll
in interface DataAccessStrategy
T
- the type of entities to load.domainType
- the type of entities to load. Must not be null
.sort
- the sorting information. Must not be null
.null
.public <T> Iterable<T> findAll(Class<T> domainType, Pageable pageable)
DataAccessStrategy
findAll
in interface DataAccessStrategy
T
- the type of entities to load.domainType
- the type of entities to load. Must not be null
.pageable
- the pagination information. Must not be null
.null
.Copyright © 2017–2020 Pivotal Software, Inc.. All rights reserved.