public class DefaultDataAccessStrategy extends Object implements DataAccessStrategy
DataAccessStrategy
is to generate SQL statements based on meta data from the entity.Constructor and Description |
---|
DefaultDataAccessStrategy(SqlGeneratorSource sqlGeneratorSource,
RelationalMappingContext context,
JdbcConverter converter,
NamedParameterJdbcOperations operations,
SqlParametersFactory sqlParametersFactory,
InsertStrategyFactory insertStrategyFactory)
Creates a
DefaultDataAccessStrategy |
Modifier and Type | Method and Description |
---|---|
<T> void |
acquireLockAll(LockMode lockMode,
Class<T> domainType)
Acquire a lock on all aggregates of the given domain type.
|
<T> void |
acquireLockById(Object id,
LockMode lockMode,
Class<T> domainType)
Acquire a lock on the aggregate specified by id.
|
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<? extends RelationalPersistentProperty> propertyPath)
Finds all entities reachable via path.
|
<T> T |
findById(Object id,
Class<T> domainType)
Loads a single entity identified by type and id.
|
<T> Object[] |
insert(List<InsertSubject<T>> insertSubjects,
Class<T> domainType,
IdValueSource idValueSource)
Inserts the data of multiple entities.
|
<T> Object |
insert(T instance,
Class<T> domainType,
Identifier identifier)
Inserts the data of a single entity.
|
<T> Object |
insert(T instance,
Class<T> domainType,
Identifier identifier,
IdValueSource idValueSource)
Inserts 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 DefaultDataAccessStrategy(SqlGeneratorSource sqlGeneratorSource, RelationalMappingContext context, JdbcConverter converter, NamedParameterJdbcOperations operations, SqlParametersFactory sqlParametersFactory, InsertStrategyFactory insertStrategyFactory)
DefaultDataAccessStrategy
sqlGeneratorSource
- must not be null.context
- must not be null.converter
- must not be null.operations
- 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 <T> Object insert(T instance, Class<T> domainType, Identifier identifier, IdValueSource idValueSource)
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
.idValueSource
- the IdValueSource
for the insert.public <T> Object[] insert(List<InsertSubject<T>> insertSubjects, Class<T> domainType, IdValueSource idValueSource)
DataAccessStrategy
insert
in interface DataAccessStrategy
T
- the type of the instance.insertSubjects
- the subjects to be inserted, where each subject contains the instance and its identifier.
Must not be null
.domainType
- the type of the instance. Must not be null
.idValueSource
- the IdValueSource
for the insert.null
.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 <T> void acquireLockById(Object id, LockMode lockMode, Class<T> domainType)
DataAccessStrategy
acquireLockById
in interface DataAccessStrategy
id
- the id of the entity to load. Must not be null
.lockMode
- the lock mode for select. Must not be null
.domainType
- the domain type of the entity. Must not be null
.public <T> void acquireLockAll(LockMode lockMode, Class<T> domainType)
DataAccessStrategy
acquireLockAll
in interface DataAccessStrategy
lockMode
- the lock mode for select. Must not be null
.domainType
- the domain type of the entity. 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 load. Must not be null
.null
.public Iterable<Object> findAllByPath(Identifier identifier, PersistentPropertyPath<? extends RelationalPersistentProperty> propertyPath)
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.propertyPath
- the path from the aggregate root to the entities to be resolved. Must not be null.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–2022 Pivotal Software, Inc.. All rights reserved.