Created
July 31, 2014 08:19
-
-
Save Qkyrie/5aa640884067fdf24829 to your computer and use it in GitHub Desktop.
Ipc Repository structure, including the full jparepository interface, as well as guava's optional in the findOne
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package be.ipc.crp.core.repository; | |
import com.google.common.base.Optional; | |
import org.springframework.data.repository.NoRepositoryBean; | |
import org.springframework.data.repository.Repository; | |
import java.io.Serializable; | |
@NoRepositoryBean | |
public interface IpcCrudRepository<T, ID extends Serializable> extends Repository<T, ID> { | |
/** | |
* Saves a given entity. Use the returned instance for further operations as the save operation might have changed the | |
* entity instance completely. | |
* | |
* @param entity | |
* @return the saved entity | |
*/ | |
<S extends T> S save(S entity); | |
/** | |
* Saves all given entities. | |
* | |
* @param entities | |
* @return the saved entities | |
* @throws IllegalArgumentException in case the given entity is (@literal null}. | |
*/ | |
<S extends T> Iterable<S> save(Iterable<S> entities); | |
/** | |
* Retrieves an entity by its id. | |
* | |
* @param id must not be {@literal null}. | |
* @return the entity with the given id or {@literal null} if none found | |
* @throws IllegalArgumentException if {@code id} is {@literal null} | |
*/ | |
Optional<T> findOne(ID id); | |
/** | |
* Returns whether an entity with the given id exists. | |
* | |
* @param id must not be {@literal null}. | |
* @return true if an entity with the given id exists, {@literal false} otherwise | |
* @throws IllegalArgumentException if {@code id} is {@literal null} | |
*/ | |
boolean exists(ID id); | |
/** | |
* Returns all instances of the type. | |
* | |
* @return all entities | |
*/ | |
Iterable<T> findAll(); | |
/** | |
* Returns all instances of the type with the given IDs. | |
* | |
* @param ids | |
* @return | |
*/ | |
Iterable<T> findAll(Iterable<ID> ids); | |
/** | |
* Returns the number of entities available. | |
* | |
* @return the number of entities | |
*/ | |
long count(); | |
/** | |
* Deletes the entity with the given id. | |
* | |
* @param id must not be {@literal null}. | |
* @throws IllegalArgumentException in case the given {@code id} is {@literal null} | |
*/ | |
void delete(ID id); | |
/** | |
* Deletes a given entity. | |
* | |
* @param entity | |
* @throws IllegalArgumentException in case the given entity is (@literal null}. | |
*/ | |
void delete(T entity); | |
/** | |
* Deletes the given entities. | |
* | |
* @param entities | |
* @throws IllegalArgumentException in case the given {@link Iterable} is (@literal null}. | |
*/ | |
void delete(Iterable<? extends T> entities); | |
/** | |
* Deletes all entities managed by the repository. | |
*/ | |
void deleteAll(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package be.ipc.crp.core.repository; | |
import org.springframework.data.domain.Page; | |
import org.springframework.data.domain.Pageable; | |
import org.springframework.data.domain.Sort; | |
import org.springframework.data.repository.NoRepositoryBean; | |
import java.io.Serializable; | |
@NoRepositoryBean | |
public interface IpcPagingAndSortingRepository<T, ID extends Serializable> extends IpcCrudRepository<T, ID> { | |
/** | |
* Returns all entities sorted by the given options. | |
* | |
* @param sort | |
* @return all entities sorted by the given options | |
*/ | |
Iterable<T> findAll(Sort sort); | |
/** | |
* Returns a {@link org.springframework.data.domain.Page} of entities meeting the paging restriction provided in the {@code Pageable} object. | |
* | |
* @param pageable | |
* @return a page of entities | |
*/ | |
Page<T> findAll(Pageable pageable); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package be.ipc.crp.core.repository; | |
import com.google.common.base.Optional; | |
import org.springframework.data.domain.Sort; | |
import org.springframework.data.jpa.repository.JpaRepository; | |
import org.springframework.data.repository.NoRepositoryBean; | |
import org.springframework.data.repository.PagingAndSortingRepository; | |
import java.io.Serializable; | |
import java.util.List; | |
/** | |
* JPA specific extension of {@link org.springframework.data.repository.Repository}. | |
* | |
* edit: made sure it's optional instead of an exception | |
* | |
* @author Oliver Gierke | |
*/ | |
@NoRepositoryBean | |
public interface IpcRepository<T, ID extends Serializable> extends IpcPagingAndSortingRepository<T, ID> { | |
/* | |
* (non-Javadoc) | |
* @see org.springframework.data.repository.CrudRepository#findAll() | |
*/ | |
List<T> findAll(); | |
/* | |
* (non-Javadoc) | |
* @see org.springframework.data.repository.PagingAndSortingRepository#findAll(org.springframework.data.domain.Sort) | |
*/ | |
List<T> findAll(Sort sort); | |
/* | |
* (non-Javadoc) | |
* @see org.springframework.data.repository.CrudRepository#findAll(java.lang.Iterable) | |
*/ | |
List<T> findAll(Iterable<ID> ids); | |
/* | |
* (non-Javadoc) | |
* @see org.springframework.data.repository.CrudRepository#save(java.lang.Iterable) | |
*/ | |
<S extends T> List<S> save(Iterable<S> entities); | |
/** | |
* Flushes all pending changes to the database. | |
*/ | |
void flush(); | |
/** | |
* Saves an entity and flushes changes instantly. | |
* | |
* @param entity | |
* @return the saved entity | |
*/ | |
<S extends T> S saveAndFlush(S entity); | |
/** | |
* Deletes the given entities in a batch which means it will create a single {@link org.springframework.data.jpa.repository.Query}. Assume that we will clear | |
* the {@link javax.persistence.EntityManager} after the call. | |
* | |
* @param entities | |
*/ | |
void deleteInBatch(Iterable<T> entities); | |
/** | |
* Deletes all entites in a batch call. | |
*/ | |
void deleteAllInBatch(); | |
/** | |
* Returns a reference to the entity with the given identifier. | |
* | |
* @param id must not be {@literal null}. | |
* @return a reference to the entity with the given identifier. | |
* @see javax.persistence.EntityManager#getReference(Class, Object) | |
*/ | |
T getOne(ID id); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment