com.atlassian.hibernate
Class HibernateObjectDao

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by org.springframework.orm.hibernate.support.HibernateDaoSupport
          extended by com.atlassian.hibernate.HibernateObjectDao
All Implemented Interfaces:
ObjectDao, org.springframework.beans.factory.InitializingBean
Direct Known Subclasses:
BodyContentHibernateDao, CachableHibernateObjectDao, DefaultGlobalDescriptionDao, HibernateAttachmentDataDao, HibernateContentPermissionSetDao, HibernateDraftDao, HibernateIndexQueueEntryDao, HibernateLabelDao, HibernateVersionHistoryDao, VersionedHibernateObjectDao

public abstract class HibernateObjectDao
extends org.springframework.orm.hibernate.support.HibernateDaoSupport
implements ObjectDao

Generic DAO for hibernate objects. Takes care of indexing and de-indexing, and setting creation and update times for objects.

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())


Field Summary
protected static org.apache.log4j.Logger log
          Deprecated. 
 
Fields inherited from class org.springframework.dao.support.DaoSupport
logger
 
Constructor Summary
HibernateObjectDao()
           
 
Method Summary
 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.
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)
           
protected  List findNamedQuery(String queryName, boolean cacheable, int maxResultCount)
           
protected  List findNamedQueryStringParam(String queryName, String paramName, Object paramValue)
           
protected  List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, boolean cacheable)
           
protected  List findNamedQueryStringParam(String queryName, String paramName, Object paramValue, boolean cacheable, int maxResultCount)
           
protected  List findNamedQueryStringParams(String queryName, boolean cacheable, 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)
           
protected  List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, boolean cacheable, 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)
           
protected  List findNamedQueryStringParams(String queryName, String paramName, Object paramValue, String param2Name, Object param2Value, String param3Name, Object param3Value, boolean cacheable, 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)
           
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)
           
protected
<T extends com.atlassian.core.bean.EntityObject>
T
findSingleObject(List<T> results)
           
protected  com.atlassian.core.bean.EntityObject getByClassId(long id)
          Retrieve the object with a particular id from the database.
protected  int getCountResult(List<Integer> results)
           
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 setIndexer(com.atlassian.bonnie.Indexer indexer)
           
protected  void unIndex(com.atlassian.core.bean.EntityObject objectToSave, boolean unindexDependents)
           
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.
 
Methods inherited from class org.springframework.orm.hibernate.support.HibernateDaoSupport
checkDaoConfig, convertHibernateAccessException, createHibernateTemplate, getHibernateTemplate, getSession, getSession, getSessionFactory, releaseSession, setHibernateTemplate, setSessionFactory
 
Methods inherited from class org.springframework.dao.support.DaoSupport
afterPropertiesSet, initDao
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface bucket.core.persistence.ObjectDao
getPersistentClass
 

Field Detail

log

@Deprecated
protected static final org.apache.log4j.Logger log
Deprecated. 
Constructor Detail

HibernateObjectDao

public HibernateObjectDao()
Method Detail

setIndexer

public void setIndexer(com.atlassian.bonnie.Indexer indexer)

getByClassId

protected com.atlassian.core.bean.EntityObject getByClassId(long id)
Retrieve the object with a particular id from the database. The object must be of the same class as the DAO's getPersistentClass() method returns.

Parameters:
id - the id of the object to look up
Returns:
the corresponding object, or null if the object does not exist with the appropriate class and id.

findAll

public List findAll()
Find all objects of the class provided by getPersistentClass()

Specified by:
findAll in interface ObjectDao
Returns:
a list of all objects of the appropriate class, or the empty list if no objects are found

findAllSorted

public List findAllSorted(String sortField)
Description copied from interface: ObjectDao
Find all objects currently persisted of a particular type and sort results by named property.

Specified by:
findAllSorted in interface ObjectDao
Parameters:
sortField - the name of the property to be sorted on. This should be null if no sorting is required.

findAllSorted

public List findAllSorted(String sortField,
                          boolean cacheable,
                          int offset,
                          int maxResultCount)
Description copied from interface: ObjectDao
Find all objects currently persisted of a particular type and sort results by named property. This version of the method allows more control over the query.

Specified by:
findAllSorted in interface ObjectDao
Parameters:
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 cached
offset - the index of the first result to be returned
maxResultCount - the maximum number of results required. Use -1 to specify no limit.

save

public void save(com.atlassian.core.bean.EntityObject objectToSave)
Save an object. The object's last-modified time will be updated, and if the object is searchable it will be indexed.

Specified by:
save in interface ObjectDao
Parameters:
objectToSave -

updateModificationData

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. The default implementation updates the last-modified timestamp, and sets the creation timestamp if it has not yet been set.

Parameters:
objectToSave - the object that is about to be saved

saveRaw

public void saveRaw(com.atlassian.core.bean.EntityObject objectToSave)
Save the object without updateModificationData being called. Modification/creation time will not be set, but the object will still be indexed if it is searchable.

Specified by:
saveRaw in interface ObjectDao
Parameters:
objectToSave - object to save

remove

public void remove(com.atlassian.core.bean.EntityObject objectToRemove)
Remove an object from the database

Specified by:
remove in interface ObjectDao
Parameters:
objectToRemove - the object to remove

refresh

public void refresh(com.atlassian.core.bean.EntityObject objectToRefresh)
Update the stat of an object based on the current state of the database. The object will be modified in place

Specified by:
refresh in interface ObjectDao
Parameters:
objectToRefresh - the object to refresh

replicate

public void replicate(Object objectToReplicate)
Description copied from interface: ObjectDao
Replicate the object. Replication does not generate a new id if the object does not exist in database and it overwrites the database row if the object already exists in database.

Specified by:
replicate in interface ObjectDao

index

protected void index(com.atlassian.core.bean.EntityObject objectToSave)

reIndex

protected void reIndex(com.atlassian.core.bean.EntityObject objectToSave)

unIndex

protected void unIndex(com.atlassian.core.bean.EntityObject objectToSave,
                       boolean unindexDependents)

findNamedQuery

protected List findNamedQuery(String queryName)
TODO Deprecate these method variants and use findNamedQueryStringParams(String,boolean,int,int, Object[]).


findNamedQuery

protected List findNamedQuery(String queryName,
                              boolean cacheable)

findNamedQuery

protected List findNamedQuery(String queryName,
                              boolean cacheable,
                              int maxResultCount)

findNamedQueryStringParam

protected List findNamedQueryStringParam(String queryName,
                                         String paramName,
                                         Object paramValue)

findNamedQueryStringParam

protected List findNamedQueryStringParam(String queryName,
                                         String paramName,
                                         Object paramValue,
                                         boolean cacheable)

findNamedQueryStringParam

protected List findNamedQueryStringParam(String queryName,
                                         String paramName,
                                         Object paramValue,
                                         boolean cacheable,
                                         int maxResultCount)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          boolean cacheable)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          boolean cacheable,
                                          int maxResultCount)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          String param3Name,
                                          Object param3Value)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          String param3Name,
                                          Object param3Value,
                                          boolean cacheable)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          String param3Name,
                                          Object param3Value,
                                          boolean cacheable,
                                          int maxResultCount)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          String param3Name,
                                          Object param3Value,
                                          String param4Name,
                                          Object param4Value)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          String paramName,
                                          Object paramValue,
                                          String param2Name,
                                          Object param2Value,
                                          String param3Name,
                                          Object param3Value,
                                          String param4Name,
                                          Object param4Value,
                                          boolean cacheable)

findNamedQueryStringParams

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)

findNamedQueryStringParams

protected List findNamedQueryStringParams(String queryName,
                                          boolean cacheable,
                                          int offset,
                                          int maxResultCount,
                                          Object... paramNamesAndValues)

getCountResult

protected int getCountResult(List<Integer> results)

findSingleObject

protected <T extends com.atlassian.core.bean.EntityObject> T findSingleObject(List<T> results)


Copyright © 2003-2012 Atlassian. All Rights Reserved.