Class RepositoryItemWriter<T>

java.lang.Object
org.springframework.batch.item.data.RepositoryItemWriter<T>
All Implemented Interfaces:
ItemWriter<T>, org.springframework.beans.factory.InitializingBean

public class RepositoryItemWriter<T> extends Object implements ItemWriter<T>, org.springframework.beans.factory.InitializingBean

A ItemWriter wrapper for a CrudRepository from Spring Data.

By default, this writer will use CrudRepository.saveAll(Iterable) to save items, unless another method is selected with setMethodName(java.lang.String). It depends on CrudRepository.saveAll(Iterable) method to store the items for the chunk. Performance will be determined by that implementation more than this writer.

As long as the repository provided is thread-safe, this writer is also thread-safe once properties are set (normal singleton behavior), so it can be used in multiple concurrent transactions.

NOTE: The RepositoryItemWriter only stores Java Objects i.e. non primitives.

Since:
2.2
Author:
Michael Minella, Mahmoud Ben Hassine
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final org.apache.commons.logging.Log
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Check mandatory properties - there must be a repository.
    protected void
    doWrite(Chunk<? extends T> items)
    Performs the actual write to the repository.
    void
    setMethodName(String methodName)
    Specifies what method on the repository to call.
    void
    setRepository(org.springframework.data.repository.CrudRepository<T,?> repository)
    Set the CrudRepository implementation for persistence
    void
    write(Chunk<? extends T> chunk)
    Write all items to the data store via a Spring Data repository.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • logger

      protected static final org.apache.commons.logging.Log logger
  • Constructor Details

    • RepositoryItemWriter

      public RepositoryItemWriter()
  • Method Details

    • setMethodName

      public void setMethodName(String methodName)
      Specifies what method on the repository to call. This method must have the type of object passed to this writer as the sole argument.
      Parameters:
      methodName - String containing the method name.
    • setRepository

      public void setRepository(org.springframework.data.repository.CrudRepository<T,?> repository)
      Set the CrudRepository implementation for persistence
      Parameters:
      repository - the Spring Data repository to be set
    • write

      public void write(Chunk<? extends T> chunk) throws Exception
      Write all items to the data store via a Spring Data repository.
      Specified by:
      write in interface ItemWriter<T>
      Parameters:
      chunk - of items to be written. Must not be null.
      Throws:
      Exception - if there are errors. The framework will catch the exception and convert or rethrow it as appropriate.
      See Also:
    • doWrite

      protected void doWrite(Chunk<? extends T> items) throws Exception
      Performs the actual write to the repository. This can be overridden by a subclass if necessary.
      Parameters:
      items - the list of items to be persisted.
      Throws:
      Exception - thrown if error occurs during writing.
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Check mandatory properties - there must be a repository.
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception