public abstract class HibernateObjectDao extends org.springframework.dao.support.DaoSupport implements ObjectDao
For this reason, you should always do object CRUD through the DAO, you shouldn't trust Hibernate to do it for you: Hibernate will save the object, but skip the additional stuff the DAO does.
Subclasses will need to implement the getPersistentClass() method to return the class that the DAO is serving: that way getByClassId() will perform correctly.
Subclasses should also override updateModificationData() if they want to perform any additional modifications on objects that are being saved through the DAO. Just remember to call super. (updateModificationData will not be called if an object is saved through saveRaw())
Modifier and Type | Class and Description |
---|---|
static class |
HibernateObjectDao.Cacheability |
Modifier and Type | Field and Description |
---|---|
protected static org.apache.log4j.Logger |
log
Deprecated.
Since 4.0. Use a class-private logger.
|
NON_CACHEABLE
Constructor and Description |
---|
HibernateObjectDao() |
Modifier and Type | Method and Description |
---|---|
protected static void |
applyTransactionTimeout(org.hibernate.Criteria criteria,
org.hibernate.SessionFactory sessionFactory) |
protected static void |
applyTransactionTimeout(org.hibernate.query.Query query,
org.hibernate.SessionFactory sessionFactory) |
protected void |
checkDaoConfig() |
protected org.springframework.orm.hibernate5.HibernateTemplate |
createHibernateTemplate(org.hibernate.SessionFactory sessionFactory) |
List |
findAll()
Find all objects of the class provided by getPersistentClass()
|
List |
findAllSorted(String sortField)
Find all objects currently persisted of a particular type and sort results by named property.
|
List |
findAllSorted(String sortField,
boolean cacheable,
int offset,
int maxResultCount)
Find all objects currently persisted of a particular type and sort results by named property.
|
<T> PageResponse<T> |
findByClassIds(Iterable<Long> ids,
LimitedRequest limitedRequest,
com.google.common.base.Predicate<? super T> filter)
Find a list of objects from the same persistent class.
|
protected List |
findNamedQuery(String queryName)
TODO Deprecate these method variants and use
findNamedQueryStringParams(String, boolean, int, int, Object[]) . |
protected List |
findNamedQuery(String queryName,
boolean cacheable)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQuery(String queryName,
boolean cacheable,
int maxResultCount)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQuery(String queryName,
HibernateObjectDao.Cacheability cacheability) |
protected List |
findNamedQuery(String queryName,
HibernateObjectDao.Cacheability cacheability,
int maxResultCount) |
protected List |
findNamedQueryStringParam(String queryName,
String paramName,
Object paramValue) |
protected List |
findNamedQueryStringParam(String queryName,
String paramName,
Object paramValue,
boolean cacheable)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParam(String queryName,
String paramName,
Object paramValue,
boolean cacheable,
int maxResultCount)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParam(String queryName,
String paramName,
Object paramValue,
HibernateObjectDao.Cacheability cacheability) |
protected List |
findNamedQueryStringParam(String queryName,
String paramName,
Object paramValue,
HibernateObjectDao.Cacheability cacheability,
int maxResultCount) |
protected List |
findNamedQueryStringParams(String queryName,
boolean cacheable,
int offset,
int maxResultCount,
Object... paramNamesAndValues)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
HibernateObjectDao.Cacheability cacheability,
int offset,
int maxResultCount,
Object... paramNamesAndValues) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
boolean cacheable)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
boolean cacheable,
int maxResultCount)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
HibernateObjectDao.Cacheability cacheability) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
HibernateObjectDao.Cacheability cacheability,
int maxResultCount) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
boolean cacheable)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
boolean cacheable,
int maxResultCount)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
HibernateObjectDao.Cacheability cacheability) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
HibernateObjectDao.Cacheability cacheability,
int maxResultCount) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
String param4Name,
Object param4Value) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
String param4Name,
Object param4Value,
boolean cacheable)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
String param4Name,
Object param4Value,
boolean cacheable,
int maxResultCount)
Deprecated.
since 5.8 Use the equivalent method that uses the
com.atlassian.hibernate.HibernateObjectDao.Cacheability enum instead of the cacheable boolean flag |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
String param4Name,
Object param4Value,
HibernateObjectDao.Cacheability cacheability) |
protected List |
findNamedQueryStringParams(String queryName,
String paramName,
Object paramValue,
String param2Name,
Object param2Value,
String param3Name,
Object param3Value,
String param4Name,
Object param4Value,
HibernateObjectDao.Cacheability cacheability,
int maxResultCount) |
protected <T extends com.atlassian.core.bean.EntityObject> |
findSingleObject(List<T> results)
Deprecated.
since 5.2. Entity ID comparison is not a recommended way to select a result. Use
uniqueResult(java.util.List) , Query.uniqueResult() ,
Criteria.uniqueResult() , or manually handle it yourself. |
protected com.atlassian.core.bean.EntityObject |
getByClassId(long id)
Retrieve the object with a particular id from the database.
|
protected int |
getCountResult(List<Number> results) |
org.springframework.orm.hibernate5.HibernateTemplate |
getHibernateTemplate() |
protected org.hibernate.Session |
getSession() |
org.hibernate.SessionFactory |
getSessionFactory() |
protected void |
index(com.atlassian.core.bean.EntityObject objectToSave) |
void |
refresh(com.atlassian.core.bean.EntityObject objectToRefresh)
Update the stat of an object based on the current state of the database.
|
protected void |
reIndex(com.atlassian.core.bean.EntityObject objectToSave) |
void |
remove(com.atlassian.core.bean.EntityObject objectToRemove)
Remove an object from the database
|
void |
replicate(Object objectToReplicate)
Replicate the object.
|
void |
save(com.atlassian.core.bean.EntityObject objectToSave)
Save an object.
|
void |
saveRaw(com.atlassian.core.bean.EntityObject objectToSave)
Save the object without updateModificationData being called.
|
void |
setHibernateTemplate(org.springframework.orm.hibernate5.HibernateTemplate hibernateTemplate) |
void |
setIndexer(com.atlassian.bonnie.Indexer indexer) |
void |
setSessionFactory(org.hibernate.SessionFactory sessionFactory) |
protected void |
unIndex(com.atlassian.core.bean.EntityObject objectToSave,
boolean unindexDependents) |
protected <T extends com.atlassian.core.bean.EntityObject> |
uniqueResult(List<T> results)
Attempts to select a single result from a list of results.
|
protected void |
updateModificationData(com.atlassian.core.bean.EntityObject objectToSave)
Perform any modifications that need to be done to an object every time it is
saved.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getPersistentClass
@Deprecated protected static final org.apache.log4j.Logger log
public final org.hibernate.SessionFactory getSessionFactory()
public final void setSessionFactory(org.hibernate.SessionFactory sessionFactory)
public final org.springframework.orm.hibernate5.HibernateTemplate getHibernateTemplate()
public final void setHibernateTemplate(org.springframework.orm.hibernate5.HibernateTemplate hibernateTemplate)
protected org.springframework.orm.hibernate5.HibernateTemplate createHibernateTemplate(org.hibernate.SessionFactory sessionFactory)
public void setIndexer(com.atlassian.bonnie.Indexer indexer)
@Nullable protected com.atlassian.core.bean.EntityObject getByClassId(long id)
id
- the id of the object to look up@Nonnull public <T> PageResponse<T> findByClassIds(Iterable<Long> ids, LimitedRequest limitedRequest, com.google.common.base.Predicate<? super T> filter)
ObjectDao
findByClassIds
in interface ObjectDao
T
- the type of entity to returnids
- - the ids of the entities to findlimitedRequest
- the pagination request defining the page size to fetchfilter
- a predicate to do in memory filtering of the result set before returning@Nonnull public List findAll()
@Nonnull public List findAllSorted(String sortField)
ObjectDao
findAllSorted
in interface ObjectDao
sortField
- the name of the property to be sorted on. This should be null if no sorting is required.@Nonnull public List findAllSorted(String sortField, boolean cacheable, int offset, int maxResultCount)
ObjectDao
findAllSorted
in interface ObjectDao
sortField
- the name of the property to be sorted on. This should be null if no sorting is required.cacheable
- control whether the results should be cachedoffset
- the index of the first result to be returnedmaxResultCount
- the maximum number of results required. Use -1 to specify no limit.public void save(com.atlassian.core.bean.EntityObject objectToSave)
protected void updateModificationData(com.atlassian.core.bean.EntityObject objectToSave)
objectToSave
- the object that is about to be savedpublic void saveRaw(com.atlassian.core.bean.EntityObject objectToSave)
public void remove(com.atlassian.core.bean.EntityObject objectToRemove)
public void refresh(com.atlassian.core.bean.EntityObject objectToRefresh)
public void replicate(Object objectToReplicate)
ObjectDao
protected void index(com.atlassian.core.bean.EntityObject objectToSave)
protected void reIndex(com.atlassian.core.bean.EntityObject objectToSave)
protected void unIndex(com.atlassian.core.bean.EntityObject objectToSave, boolean unindexDependents)
protected List findNamedQuery(String queryName)
findNamedQueryStringParams(String, boolean, int, int, Object[])
.@Deprecated protected List findNamedQuery(String queryName, boolean cacheable)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQuery(String queryName, HibernateObjectDao.Cacheability cacheability)
@Deprecated protected List findNamedQuery(String queryName, boolean cacheable, int maxResultCount)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQuery(String queryName, HibernateObjectDao.Cacheability cacheability, int maxResultCount)
protected List findNamedQueryStringParam(String queryName, String paramName, Object paramValue)
@Deprecated protected List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, boolean cacheable)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, HibernateObjectDao.Cacheability cacheability)
@Deprecated protected List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, boolean cacheable, int maxResultCount)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, HibernateObjectDao.Cacheability cacheability, int maxResultCount)
protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, boolean cacheable)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, HibernateObjectDao.Cacheability cacheability)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, boolean cacheable, int maxResultCount)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, HibernateObjectDao.Cacheability cacheability, int maxResultCount)
protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, boolean cacheable)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, HibernateObjectDao.Cacheability cacheability)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, boolean cacheable, int maxResultCount)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, HibernateObjectDao.Cacheability cacheability, int maxResultCount)
protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, String param4Name, Object param4Value)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, String param4Name, Object param4Value, boolean cacheable)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, String param4Name, Object param4Value, HibernateObjectDao.Cacheability cacheability)
@Deprecated protected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, String param4Name, Object param4Value, boolean cacheable, int maxResultCount)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, String param4Name, Object param4Value, HibernateObjectDao.Cacheability cacheability, int maxResultCount)
@Deprecated protected List findNamedQueryStringParams(String queryName, boolean cacheable, int offset, int maxResultCount, Object... paramNamesAndValues)
com.atlassian.hibernate.HibernateObjectDao.Cacheability
enum instead of the cacheable boolean flagprotected List findNamedQueryStringParams(String queryName, HibernateObjectDao.Cacheability cacheability, int offset, int maxResultCount, Object... paramNamesAndValues)
@Deprecated @Nullable protected <T extends com.atlassian.core.bean.EntityObject> T findSingleObject(List<T> results)
uniqueResult(java.util.List)
, Query.uniqueResult()
,
Criteria.uniqueResult()
, or manually handle it yourself.protected <T extends com.atlassian.core.bean.EntityObject> T uniqueResult(List<T> results) throws org.hibernate.NonUniqueResultException
org.hibernate.NonUniqueResultException
- If more than one unique objects is found in the list.protected final void checkDaoConfig()
checkDaoConfig
in class org.springframework.dao.support.DaoSupport
protected org.hibernate.Session getSession()
protected static void applyTransactionTimeout(org.hibernate.query.Query query, org.hibernate.SessionFactory sessionFactory)
protected static void applyTransactionTimeout(org.hibernate.Criteria criteria, org.hibernate.SessionFactory sessionFactory)
Copyright © 2003–2017 Atlassian. All rights reserved.