Package ubic.gemma.persistence.service
Class AbstractVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>
- java.lang.Object
-
- ubic.gemma.persistence.service.AbstractDao<O>
-
- ubic.gemma.persistence.service.AbstractVoEnabledDao<O,VO>
-
- All Implemented Interfaces:
BaseDao<O>,BaseVoEnabledDao<O,VO>
- Direct Known Subclasses:
AbstractFilteringVoEnabledDao,AbstractNoopFilteringVoEnabledDao,BibliographicReferenceDaoImpl,BioAssayDimensionDaoImpl,BioMaterialDaoImpl,BioSequenceDaoImpl,BlacklistedEntityDaoImpl,BlatResultDaoImpl,ExperimentalFactorDaoImpl,ExpressionExperimentSetDaoImpl,GeeqDaoImpl,GeneProductDaoImpl
public abstract class AbstractVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>> extends AbstractDao<O> implements BaseVoEnabledDao<O,VO>
Created by tesarst on 01/06/17. Base DAO providing value object functionality.
-
-
Field Summary
Fields Modifier and Type Field Description protected static intREPORT_SLOW_QUERY_AFTER_MSAmount of time in milliseconds after which a query (including post-processing) should be reported.-
Fields inherited from class ubic.gemma.persistence.service.AbstractDao
elementClass, log
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractVoEnabledDao(Class<? extends O> elementClass, SessionFactory sessionFactory)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract VOdoLoadValueObject(O entity)Load a value object for a given entity.List<VO>doLoadValueObjects(Collection<O> entities)Load all the value objects for the given entities.List<VO>loadAllValueObjects()Should be overridden for any entity that requires special handling of larger amounts of VOs.VOloadValueObject(O entity)Load a value object corresponding to an entityVOloadValueObjectById(Long id)List<VO>loadValueObjects(Collection<O> entities)The default implementation callsloadValueObject(Identifiable)for each entity and filters out nulls.List<VO>loadValueObjectsByIds(Collection<Long> ids)protected voidpostProcessValueObjects(List<VO> vos)Post-process VOs in bulk.-
Methods inherited from class ubic.gemma.persistence.service.AbstractDao
countAll, create, create, find, findByProperty, findByPropertyIn, findOneByProperty, findOrCreate, getBatchSize, getElementClass, getIdentifierPropertyName, getSessionFactory, load, load, loadAll, loadReference, loadReference, remove, remove, remove, save, save, update, update
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ubic.gemma.persistence.service.BaseDao
countAll, create, create, find, findOrCreate, getElementClass, getIdentifierPropertyName, load, load, loadAll, loadReference, loadReference, remove, remove, remove, save, save, update, update
-
-
-
-
Field Detail
-
REPORT_SLOW_QUERY_AFTER_MS
protected static final int REPORT_SLOW_QUERY_AFTER_MS
Amount of time in milliseconds after which a query (including post-processing) should be reported.If there is no way to perform a given query under this amount of time, consider paginating results or optimizing how Hibernate entities are loaded or cached.
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractVoEnabledDao
protected AbstractVoEnabledDao(Class<? extends O> elementClass, SessionFactory sessionFactory)
-
-
Method Detail
-
doLoadValueObject
@Nullable protected abstract VO doLoadValueObject(O entity)
Load a value object for a given entity.This should be fast and efficient, and avoid any database query or post-processing. If you need to perform additional queries, implement
postProcessValueObjects(List)instead.
-
doLoadValueObjects
public List<VO> doLoadValueObjects(Collection<O> entities)
Load all the value objects for the given entities.The default is to apply
doLoadValueObject(Identifiable)on each entry and weed out null elements.This method should be fast and any post-processing should happen in
postProcessValueObjects(List).
-
postProcessValueObjects
protected void postProcessValueObjects(List<VO> vos)
Post-process VOs in bulk.Use this as an opportunity to load extra informations that could not be populated in the initial
doLoadValueObject(Identifiable)ordoLoadValueObjects(Collection)
-
loadValueObject
public final VO loadValueObject(O entity)
Description copied from interface:BaseVoEnabledDaoLoad a value object corresponding to an entity- Specified by:
loadValueObjectin interfaceBaseVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>- Parameters:
entity- the entity to turn into a value object- Returns:
- a value object
-
loadValueObjectById
public final VO loadValueObjectById(Long id)
- Specified by:
loadValueObjectByIdin interfaceBaseVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>- Returns:
- a value object, or null if it could not be constructed
-
loadValueObjects
public final List<VO> loadValueObjects(Collection<O> entities)
The default implementation callsloadValueObject(Identifiable)for each entity and filters out nulls.- Specified by:
loadValueObjectsin interfaceBaseVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>- Parameters:
entities- the entities to turn into value objects- Returns:
- a collection of value objects
-
loadValueObjectsByIds
public final List<VO> loadValueObjectsByIds(Collection<Long> ids)
- Specified by:
loadValueObjectsByIdsin interfaceBaseVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>
-
loadAllValueObjects
public final List<VO> loadAllValueObjects()
Should be overridden for any entity that requires special handling of larger amounts of VOs.- Specified by:
loadAllValueObjectsin interfaceBaseVoEnabledDao<O extends Identifiable,VO extends IdentifiableValueObject<O>>- Returns:
- VOs of all instances of the class this DAO manages.
-
-