com.ebmwebsourcing.webcommons.persistence.dao
Class GenericHibernateDAOImpl<T extends BaseObject,PK extends java.io.Serializable>

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by org.springframework.orm.hibernate3.support.HibernateDaoSupport
          extended by com.ebmwebsourcing.webcommons.persistence.dao.GenericHibernateDAOImpl<T,PK>
Type Parameters:
T - a type variable
PK - the primary key for that type
All Implemented Interfaces:
GenericORMDAO<T,PK>, org.springframework.beans.factory.InitializingBean

public class GenericHibernateDAOImpl<T extends BaseObject,PK extends java.io.Serializable>
extends org.springframework.orm.hibernate3.support.HibernateDaoSupport
implements GenericORMDAO<T,PK>

This class serves as the Base class for all other DAOs - namely to hold common CRUD methods that they might all use. You should only need to extend this class when your require custom CRUD logic.

To register this class in your Spring context file, use the following XML.

      <bean id="fooDao" class="org.ow2.dragon.persistence.dao.GenericDaoHibernate">
          <property name="type" value="org.ow2.dragon.persistence.bo.Foo"/>
          <property name="sessionFactory" ref="sessionFactory"/>
      </bean>
 

Author:
ofabre - eBM WebSourcing

Field Summary
 java.lang.Class<T> type
           
 
Constructor Summary
GenericHibernateDAOImpl(org.hibernate.SessionFactory factory)
           
 
Method Summary
 int count(com.trg.search.IMutableSearch search)
          Returns the total number of results that would be returned using the given ISearch if there were no paging or maxResult limits.
 boolean exists(PK id)
          Checks for existence of an object of type T using the id arg.
 java.util.List<T> findByNamedQuery(java.lang.String queryName, java.util.Map<java.lang.String,java.lang.Object> queryParams)
          Find a list of records by using a named query
 T get(PK id)
          Return the persistent instance of an entity with the given identifier, or null if not found.
 java.util.List<T> getAll()
          Generic method used to get all objects of a particular type.
 java.util.List<T> getAll(java.util.List<PK> ids)
          Retrieve a List of entities matching given ids
 java.util.List<T> getAll(java.util.List<PK> ids, RequestOptions requestOptions)
          Retrieve a List of entities matching given ids, sorted and paginated according to the given request options
 java.util.List<T> getAll(RequestOptions requestOptions)
          Generic method used to get all objects of a particular type, sorted and paginated according to the given request options.
 java.util.List<T> getAllDistinct()
          Gets all records without duplicates.
 org.hibernate.search.FullTextSession getFullTextSession()
          Return the FullTextSession associated to the current Session
 org.springframework.orm.hibernate3.LocalSessionFactoryBean getLocalSessionFactoryBean()
           
 java.lang.Class<T> getManipulatedType()
          Return the type of entity manipulated by this DAO
 void remove(PK id)
          Generic method to delete an object based on class and id
 void remove(T object)
          Generic method to delete an object
 void removeAll(java.util.List<T> objects)
          Generic method to delete a list of objects
 T save(T object)
          Generic method to save an object - handles both update and insert.
 java.util.List<T> search(com.trg.search.IMutableSearch search)
          Search for objects based on the search parameters in the specified ISearch object.
 com.trg.search.SearchResult<T> searchAndCount(com.trg.search.IMutableSearch search)
          Returns a SearchResult object that includes the list of results like search() and the total length like searchLength.
 java.util.List<T> searchEquals(java.lang.String[] criteria, java.lang.String[] properties, RequestOptions requestOptions)
          This method allows to search Objects on String properties, fitting search criteria.
 java.util.List<T> searchLike(java.lang.String[] criteria, java.lang.String[] properties, RequestOptions requestOptions)
          This method allows to search Objects on String properties, fitting search criteria.
 java.util.List<T> searchLucene(java.lang.String[] criteria, java.lang.String[] searchedProperties)
          This method allows to search Objects on String properties, fitting search criteria.
 java.util.List<T> searchLucene(java.lang.String[] criteria, java.lang.String[] searchedProperties, RequestOptions requestOptions)
          This method allows to search Objects on String properties, fitting search criteria.
 T searchUnique(com.trg.search.IMutableSearch search)
          Search for a single result using the given parameters.
 void setLocalSessionFactoryBean(org.springframework.orm.hibernate3.LocalSessionFactoryBean localSessionFactoryBean)
           
 void setType()
           
 
Methods inherited from class org.springframework.orm.hibernate3.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
 

Field Detail

type

public java.lang.Class<T extends BaseObject> type
Constructor Detail

GenericHibernateDAOImpl

public GenericHibernateDAOImpl(org.hibernate.SessionFactory factory)
Method Detail

getLocalSessionFactoryBean

public org.springframework.orm.hibernate3.LocalSessionFactoryBean getLocalSessionFactoryBean()

setLocalSessionFactoryBean

public void setLocalSessionFactoryBean(org.springframework.orm.hibernate3.LocalSessionFactoryBean localSessionFactoryBean)

setType

public void setType()

getAll

public java.util.List<T> getAll(RequestOptions requestOptions)
Generic method used to get all objects of a particular type, sorted and paginated according to the given request options. This is the same as lookup up all rows in a table. The sort option works only on single properties, cause colection properties need to be sorted. If you have to sort on collection properties, use search(IMutableSearch search) method with sort and fetching options

Specified by:
getAll in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
requestOptions - include sort order and pagination information
Returns:
List of populated objects

getAll

public java.util.List<T> getAll()
Generic method used to get all objects of a particular type. This is the same as lookup up all rows in a table.

Specified by:
getAll in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Returns:
List of populated objects

getAll

public java.util.List<T> getAll(java.util.List<PK> ids)
Description copied from interface: GenericORMDAO
Retrieve a List of entities matching given ids

Specified by:
getAll in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
ids - a List of ids
Returns:
a List of entities matching ids, must be non null, could be empty

getAll

public java.util.List<T> getAll(java.util.List<PK> ids,
                                RequestOptions requestOptions)
Retrieve a List of entities matching given ids, sorted and paginated according to the given request options

Specified by:
getAll in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
ids - a List of ids
requestOptions - include sort order and pagination information
Returns:
a sorted/paginated List of entities matching ids, must be non null, could be empty

getAllDistinct

public java.util.List<T> getAllDistinct()
Gets all records without duplicates.

Note that if you use this method, it is imperative that your model classes correctly implement the hashcode/equals methods

Specified by:
getAllDistinct in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Returns:
List of populated objects

get

public T get(PK id)
Return the persistent instance of an entity with the given identifier, or null if not found.

Specified by:
get in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
id - the identifier of the persistent instance
Returns:
the persistent instance, or null if not found
See Also:
Session.get(Class, java.io.Serializable)

exists

public boolean exists(PK id)
Checks for existence of an object of type T using the id arg.

Specified by:
exists in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
id - the id of the entity
Returns:
- true if it exists, false if it doesn't

save

public T save(T object)
Generic method to save an object - handles both update and insert.

Specified by:
save in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
object - the object to save
Returns:
the persisted object

remove

public void remove(PK id)
Generic method to delete an object based on class and id

Specified by:
remove in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
id - the identifier (primary key) of the object to remove

remove

public void remove(T object)
Generic method to delete an object

Specified by:
remove in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
object - the object to remove

removeAll

public void removeAll(java.util.List<T> objects)
Generic method to delete a list of objects

Specified by:
removeAll in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
objects - the object list to remove

findByNamedQuery

public java.util.List<T> findByNamedQuery(java.lang.String queryName,
                                          java.util.Map<java.lang.String,java.lang.Object> queryParams)
Find a list of records by using a named query

Specified by:
findByNamedQuery in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
queryName - query name of the named query
queryParams - a map of the query names and the values
Returns:
a list of the records found

getManipulatedType

public java.lang.Class<T> getManipulatedType()
Return the type of entity manipulated by this DAO

Specified by:
getManipulatedType in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Returns:
the Class of the manipulated entity

search

public java.util.List<T> search(com.trg.search.IMutableSearch search)
Search for objects based on the search parameters in the specified ISearch object.

Specified by:
search in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
See Also:
ISearch

count

public int count(com.trg.search.IMutableSearch search)
Returns the total number of results that would be returned using the given ISearch if there were no paging or maxResult limits.

Specified by:
count in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
See Also:
ISearch

searchAndCount

public com.trg.search.SearchResult<T> searchAndCount(com.trg.search.IMutableSearch search)
Returns a SearchResult object that includes the list of results like search() and the total length like searchLength.

Specified by:
searchAndCount in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
See Also:
ISearch

searchUnique

public T searchUnique(com.trg.search.IMutableSearch search)
                                  throws org.hibernate.NonUniqueResultException
Search for a single result using the given parameters.

Specified by:
searchUnique in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Throws:
org.hibernate.NonUniqueResultException

searchEquals

public java.util.List<T> searchEquals(java.lang.String[] criteria,
                                      java.lang.String[] properties,
                                      RequestOptions requestOptions)
This method allows to search Objects on String properties, fitting search criteria. Properties can be direct object fields or fields of included objects (in this case, fields must be referenced by the doted notation like "foo.bar"). Use a equality statement for each criteria on each property. Results are sorted and paginated in respect of the given request options.

Specified by:
searchEquals in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
criteria - the search criteria
properties - the searched properties
requestOptions - include sort order and pagination information
Returns:
a list of object matching the different criteria sorted and paginated

searchLike

public java.util.List<T> searchLike(java.lang.String[] criteria,
                                    java.lang.String[] properties,
                                    RequestOptions requestOptions)
This method allows to search Objects on String properties, fitting search criteria. Properties can be direct object fields or fields of included objects (in this case, fields must be referenced by the doted notation like "foo.bar"). Use a like statement for each criteria on each property. Results are sorted and paginated in respect of the given request options.

Specified by:
searchLike in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
criteria - the search criteria
properties - the searched properties
requestOptions - include sort order and pagination information
Returns:
a list of object matching the different criteria sorted and paginated

searchLucene

public java.util.List<T> searchLucene(java.lang.String[] criteria,
                                      java.lang.String[] searchedProperties)
                                                  throws DAOLayerException
This method allows to search Objects on String properties, fitting search criteria. Properties can be direct object fields or fields of included objects (in this case, fields must be referenced by the doted notation like "foo.bar"). Process a research on Full Text Search Engine (Hibernate Search) index and return a List of entity managed by the ORM engine (Hibernate). All ORM managed attributes of these entities are populated.

Specified by:
searchLucene in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
criteria - the search criteria
Returns:
a List of entity managed by the ORM engine.
Throws:
DAOLayerException

searchLucene

public java.util.List<T> searchLucene(java.lang.String[] criteria,
                                      java.lang.String[] searchedProperties,
                                      RequestOptions requestOptions)
                                                  throws DAOLayerException
This method allows to search Objects on String properties, fitting search criteria. Properties can be direct object fields or fields of included objects (in this case, fields must be referenced by the doted notation like "foo.bar"). Process a research on Full Text Search Engine (Hibernate Search) index and return a List of entity managed by the ORM engine (Hibernate), sorted and paginated according to the given request options. All ORM managed attributes of these entities are populated.

Specified by:
searchLucene in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Parameters:
criteria - the search criteria
requestOptions - include sort order and pagination information, could be null
Returns:
a List of entity managed by the ORM engine.
Throws:
DAOLayerException

getFullTextSession

public org.hibernate.search.FullTextSession getFullTextSession()
Description copied from interface: GenericORMDAO
Return the FullTextSession associated to the current Session

Specified by:
getFullTextSession in interface GenericORMDAO<T extends BaseObject,PK extends java.io.Serializable>
Returns:
the FullTextSession associated to the current Session


Copyright © 2010 eBM WebSourcing. All Rights Reserved.