Class JpaItemWriter<T>
java.lang.Object
org.springframework.batch.item.database.JpaItemWriter<T>
- All Implemented Interfaces:
ItemWriter<T>,org.springframework.beans.factory.InitializingBean
public class JpaItemWriter<T>
extends Object
implements ItemWriter<T>, org.springframework.beans.factory.InitializingBean
ItemWriter that is using a JPA
EntityManagerFactory to merge any Entities that aren't part of the
persistence context.
It is required that write(List) is called inside a transaction.The reader must be configured with an
EntityManagerFactory that is capable of
participating in Spring managed transactions.
The writer is thread-safe after its properties are set (normal singleton
behaviour), so it can be used to write in multiple concurrent transactions.- Author:
- Thomas Risberg, Mahmoud Ben Hassine
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCheck mandatory properties - there must be an entityManagerFactory.protected voidDo perform the actual write operation.voidsetEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory) Set the EntityManager to be used internally.voidsetUsePersist(boolean usePersist) Set whether the EntityManager should perform a persist instead of a merge.voidMerge all provided items that aren't already in the persistence context and then flush the entity manager.
-
Field Details
-
logger
protected static final org.apache.commons.logging.Log logger
-
-
Constructor Details
-
JpaItemWriter
public JpaItemWriter()
-
-
Method Details
-
setEntityManagerFactory
public void setEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory) Set the EntityManager to be used internally.- Parameters:
entityManagerFactory- the entityManagerFactory to set
-
setUsePersist
public void setUsePersist(boolean usePersist) Set whether the EntityManager should perform a persist instead of a merge.- Parameters:
usePersist- whether to use persist instead of merge.
-
afterPropertiesSet
Check mandatory properties - there must be an entityManagerFactory.- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
write
Merge all provided items that aren't already in the persistence context and then flush the entity manager.- Specified by:
writein interfaceItemWriter<T>- Parameters:
items- items to be written- See Also:
-
doWrite
Do perform the actual write operation. This can be overridden in a subclass if necessary.- Parameters:
entityManager- the EntityManager to use for the operationitems- the list of items to use for the write
-