티스토리 뷰

Jpa

package org.springframework.data.jpa.repository;

import java.util.List;

import javax.persistence.EntityManager;

import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;

/**
 * JPA specific extension of {@link org.springframework.data.repository.Repository}.
 *
 * @author Oliver Gierke
 * @author Christoph Strobl
 * @author Mark Paluch
 */
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {

	/*
	 * (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> findAllById(Iterable<ID> ids);

	/*
	 * (non-Javadoc)
	 * @see org.springframework.data.repository.CrudRepository#save(java.lang.Iterable)
	 */
	<S extends T> List<S> saveAll(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 Query}. Assume that we will clear
	 * the {@link javax.persistence.EntityManager} after the call.
	 *
	 * @param entities
	 */
	void deleteInBatch(Iterable<T> entities);

	/**
	 * Deletes all entities in a batch call.
	 */
	void deleteAllInBatch();

	/**
	 * Returns a reference to the entity with the given identifier. Depending on how the JPA persistence provider is
	 * implemented this is very likely to always return an instance and throw an
	 * {@link javax.persistence.EntityNotFoundException} on first access. Some of them will reject invalid identifiers
	 * immediately.
	 *
	 * @param id must not be {@literal null}.
	 * @return a reference to the entity with the given identifier.
	 * @see EntityManager#getReference(Class, Object) for details on when an exception is thrown.
	 */
	T getOne(ID id);

	/*
	 * (non-Javadoc)
	 * @see org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example)
	 */
	@Override
	<S extends T> List<S> findAll(Example<S> example);

	/*
	 * (non-Javadoc)
	 * @see org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example, org.springframework.data.domain.Sort)
	 */
	@Override
	<S extends T> List<S> findAll(Example<S> example, Sort sort);
}

 

Paging and Sorting

package org.springframework.data.repository;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

/**
 * Extension of {@link CrudRepository} to provide additional methods to retrieve entities using the pagination and
 * sorting abstraction.
 *
 * @author Oliver Gierke
 * @see Sort
 * @see Pageable
 * @see Page
 */
@NoRepositoryBean
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<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 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);
}

 

Crud

@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.
    *
    * @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.
    *
    * @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.
    *
    * @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.
    *
    * @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.
    *
    * @return all entities
    */
   Iterable<T> findAll();

   /**
    * 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.
    *
    * @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 {@literal id} is {@literal null}
    */
   void deleteById(ID id);

   /**
    * 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 all instances of the type {@code T} with the given IDs.
    *
    * @param ids must not be {@literal null}. Must not contain {@literal null} elements.
    * @throws IllegalArgumentException in case the given {@literal ids} or one of its elements is {@literal null}.
    * @since 2.5
    */
   void deleteAllById(Iterable<? extends ID> ids);

   /**
    * 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.
    */
   void deleteAll();
}

'Spring' 카테고리의 다른 글

RuntimeException 에 대해 알아봅시다  (0) 2022.02.02
Intellij Tip  (0) 2022.01.20
SpringBoot(JPA) vs. Django  (0) 2022.01.20
Bean 유효성 검사 제약 조건 사용  (0) 2022.01.07
Entity Model & Repository & Controller  (0) 2022.01.04
댓글