# List of ItemReaders

## Item Readers

### Available Item Readers

Item Reader | Description
--- | ---
AbstractItemCountingItemStreamItemReader | Abstract base class that provides basic restart capabilities by counting the number of items returned from an `ItemReader`.
ListItemReader | Provides the items from a list, one at a time
ItemReaderAdapter | Adapts any class to the `ItemReader` interface.
AggregateItemReader | An ItemReader that delivers a list as its item, storing up objects from the injected ItemReader until they are ready to be packed out as a collection. This ItemReader should mark the beginning and end of records with the constant values in FieldSetMapper AggregateItemReader#BEGIN_RECORD and AggregateItemReader#END_RECORD
FlatFileItemReader | Reads from a flat file. Includes ItemStream and Skippable functionality. See section on Read from a File
StaxEventItemReader | Reads via StAX. See HOWTO - Read from a File
JdbcCursorItemReader | Reads from a database cursor via JDBC. See HOWTO - Read from a Database
HibernateCursorItemReader | Reads from a cursor based on an HQL query. See section on Reading from a Database
IbatisPagingItemReader | Reads via iBATIS based on a query. Pages through the rows so that large datasets can be read without running out of memory. See HOWTO - Read from a Database
JmsItemReader | Given a Spring JmsOperations object and a JMS Destination or destination name to send errors, provides items received through the injected JmsOperations receive() method
JpaPagingItemReader | Given a JPQL statement, pages through the rows, such that large datasets can be read without running out of memory
JdbcPagingItemReader | Given a SQL statement, pages through the rows, such that large datasets can be read without running out of memory

## Item Writers

### Available Item Writers

Item Writer | Description
--- | ---
AbstractItemStreamItemWriter | Abstract base class that combines the `ItemStream` and `ItemWriter` interfaces.
CompositeItemWriter | Passes an item to the process method of each in an injected List of ItemWriter objects
ItemWriterAdapter | Adapts any class to the `ItemWriter` interface.
PropertyExtractingDelegatingItemWriter | Extends AbstractMethodInvokingDelegator creating arguments on the fly. Arguments are created by retrieving the values from the fields in the item to be processed (via a SpringBeanWrapper) based on an injected array of field name
FlatFileItemWriter | Writes to a flat file. Includes ItemStream and Skippable functionality. See section on Writing to a File
HibernateItemWriter | This item writer is hibernate session aware and handles some transaction-related work that a non-"hibernate aware" item writer would not need to know about and then delegates to another item writer to do the actual writing.
JdbcBatchItemWriter | Uses batching freatures from a `PreparedStatement`, if available, and can take rudimentary steps to locate a failure during a `flush`.
JpaItemWriter | This item writer is JPA EntityManager aware and handles some transaction-related work that a non-"jpa aware" `ItemWriter` would not need to know about and then delegates to another writer to do the actual writing.
StaxEventItemWriter | Uses an ObjectToXmlSerializer implementation to convert each item to XML and then writes it to an XML file using StAX.