/*
 * Copyright 2008-2020 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springframework.data.repository;

import java.util.Optional;

Interface for generic CRUD operations on a repository for a specific type.
Author:Oliver Gierke, Eberhard Wolff
/** * Interface for generic CRUD operations on a repository for a specific type. * * @author Oliver Gierke * @author Eberhard Wolff */
@NoRepositoryBean public interface CrudRepository<T, ID> 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.
Params:
  • entity – must not be null.
Throws:
Returns:the saved entity; will never be null.
/** * Saves a given entity. Use the returned instance for further operations as the save operation might have changed the * entity instance completely. * * @param entity must not be {@literal null}. * @return the saved entity; will never be {@literal null}. * @throws IllegalArgumentException in case the given {@literal entity} is {@literal null}. */
<S extends T> S save(S entity);
Saves all given entities.
Params:
  • entities – must not be null nor must it contain null.
Throws:
Returns:the saved entities; will never be null. The returned Iterable will have the same size as the Iterable passed as an argument.
/** * Saves all given entities. * * @param entities must not be {@literal null} nor must it contain {@literal null}. * @return the saved entities; will never be {@literal null}. The returned {@literal Iterable} will have the same size * as the {@literal Iterable} passed as an argument. * @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is * {@literal null}. */
<S extends T> Iterable<S> saveAll(Iterable<S> entities);
Retrieves an entity by its id.
Params:
  • id – must not be null.
Throws:
Returns:the entity with the given id or Optional#empty() if none found.
/** * Retrieves an entity by its id. * * @param id must not be {@literal null}. * @return the entity with the given id or {@literal Optional#empty()} if none found. * @throws IllegalArgumentException if {@literal id} is {@literal null}. */
Optional<T> findById(ID id);
Returns whether an entity with the given id exists.
Params:
  • id – must not be null.
Throws:
Returns:true if an entity with the given id exists, false otherwise.
/** * Returns whether an entity with the given id exists. * * @param id must not be {@literal null}. * @return {@literal true} if an entity with the given id exists, {@literal false} otherwise. * @throws IllegalArgumentException if {@literal id} is {@literal null}. */
boolean existsById(ID id);
Returns all instances of the type.
Returns:all entities
/** * Returns all instances of the type. * * @return all entities */
Iterable<T> findAll();
Returns all instances of the type T with the given IDs.

If some or all ids are not found, no entities are returned for these IDs.

Note that the order of elements in the result is not guaranteed.

Params:
  • ids – must not be null nor contain any null values.
Throws:
Returns:guaranteed to be not null. The size can be equal or less than the number of given ids.
/** * Returns all instances of the type {@code T} with the given IDs. * <p> * If some or all ids are not found, no entities are returned for these IDs. * <p> * Note that the order of elements in the result is not guaranteed. * * @param ids must not be {@literal null} nor contain any {@literal null} values. * @return guaranteed to be not {@literal null}. The size can be equal or less than the number of given * {@literal ids}. * @throws IllegalArgumentException in case the given {@link Iterable ids} or one of its items is {@literal null}. */
Iterable<T> findAllById(Iterable<ID> ids);
Returns the number of entities available.
Returns:the number of entities.
/** * Returns the number of entities available. * * @return the number of entities. */
long count();
Deletes the entity with the given id.
Params:
  • id – must not be null.
Throws:
/** * Deletes the entity with the given id. * * @param id must not be {@literal null}. * @throws IllegalArgumentException in case the given {@literal id} is {@literal null} */
void deleteById(ID id);
Deletes a given entity.
Params:
  • entity – must not be null.
Throws:
/** * Deletes a given entity. * * @param entity must not be {@literal null}. * @throws IllegalArgumentException in case the given entity is {@literal null}. */
void delete(T entity);
Deletes the given entities.
Params:
  • entities – must not be null. Must not contain null elements.
Throws:
/** * Deletes the given entities. * * @param entities must not be {@literal null}. Must not contain {@literal null} elements. * @throws IllegalArgumentException in case the given {@literal entities} or one of its entities is {@literal null}. */
void deleteAll(Iterable<? extends T> entities);
Deletes all entities managed by the repository.
/** * Deletes all entities managed by the repository. */
void deleteAll(); }