com.googlecode.jbp.jpa
Class AbstractJpaRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>,PersistenceModel extends DomainModel>

java.lang.Object
  extended by com.googlecode.jbp.jpa.AbstractJpaRepository<ID,DomainModel,PersistenceModel>
Type Parameters:
ID - The class of the identifier.
DomainModel - The domain interface of the persisted classes.
PersistenceModel - The persisted class, which implements the domain interface.
All Implemented Interfaces:
IRepository<ID,DomainModel>

public abstract class AbstractJpaRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>,PersistenceModel extends DomainModel>
extends Object
implements IRepository<ID,DomainModel>

Abstract data access object implemented using Hibernate. This abstract class should be extended by specific data access objects when Hibernate is to be used for persistence.

Note that @Transactional annotations are used here as Hibernate works with object graphs, thus multiple rows in multiple tables may be modified in a single method. Nevertheless don't forget that normally transaction should always be declared in the service layer.

Author:
Yannick LOTH - yannick AT littlej.biz -

Constructor Summary
AbstractJpaRepository(javax.persistence.EntityManager entityManagerParam, IGenericRepository genericRepositoryParam)
          Constructor
 
Method Summary
protected  javax.persistence.TypedQuery addPagingToQuery(javax.persistence.TypedQuery queryParam, Page pageParam)
          Adds the specified paging to the specified criteria.
 DomainModel create(DomainModel entity)
           
protected
<ID extends Serializable,DomainModel extends IIdentifiable<ID>>
javax.persistence.criteria.CriteriaQuery<DomainModel>
createCriteria(Class<DomainModel> persistentClassParam)
          Creates a criteria with the persisted entity's class.
 void delete(Collection<DomainModel> entities)
           
 void delete(DomainModel entity)
           
 void delete(ID id)
           
 void deleteAll()
           
 boolean exists(DomainModel entity)
           
 boolean exists(ID id)
           
 void flush()
          Flushes the current Hibernate session.
protected abstract  Class<PersistenceModel> getPersistentClass()
          Returns the class of the entities managed using this data access object.
 List<DomainModel> retrieveAll()
           
 List<DomainModel> retrieveAll(Page pageParam)
           
 DomainModel retrieveById(ID id)
           
 void update(Collection<DomainModel> entities)
           
 void update(DomainModel entity)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractJpaRepository

public AbstractJpaRepository(javax.persistence.EntityManager entityManagerParam,
                             IGenericRepository genericRepositoryParam)
Constructor

Parameters:
entityManagerParam - The JPA entity manager that this data access object uses.
genericRepositoryParam -
Method Detail

create

public final DomainModel create(DomainModel entity)
Specified by:
create in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

createCriteria

protected final <ID extends Serializable,DomainModel extends IIdentifiable<ID>> javax.persistence.criteria.CriteriaQuery<DomainModel> createCriteria(Class<DomainModel> persistentClassParam)
Creates a criteria with the persisted entity's class.

Returns:
The created criteria.

delete

public void delete(Collection<DomainModel> entities)
Specified by:
delete in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

delete

public void delete(DomainModel entity)
Specified by:
delete in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

delete

public void delete(ID id)
Specified by:
delete in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

deleteAll

public void deleteAll()
Specified by:
deleteAll in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

exists

public boolean exists(DomainModel entity)
Specified by:
exists in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

exists

public boolean exists(ID id)
Specified by:
exists in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

flush

public final void flush()
Flushes the current Hibernate session.


getPersistentClass

protected abstract Class<PersistenceModel> getPersistentClass()
Returns the class of the entities managed using this data access object.

Returns:
The class of the entities managed using this data access object.

retrieveAll

public List<DomainModel> retrieveAll()
Specified by:
retrieveAll in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

retrieveAll

public List<DomainModel> retrieveAll(Page pageParam)
Specified by:
retrieveAll in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

addPagingToQuery

protected final javax.persistence.TypedQuery addPagingToQuery(javax.persistence.TypedQuery queryParam,
                                                              Page pageParam)
Adds the specified paging to the specified criteria.

Parameters:
queryParam - The query whose results must be paged.
pageParam - The paging setting.
Returns:
The specified criteria, with paging set.

retrieveById

public DomainModel retrieveById(ID id)
Specified by:
retrieveById in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

update

public void update(Collection<DomainModel> entities)
Specified by:
update in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>

update

public void update(DomainModel entity)
Specified by:
update in interface IRepository<ID extends Serializable,DomainModel extends IIdentifiable<ID>>


Copyright © 2011. All Rights Reserved.