6.2 ItemWriter
ItemWriter 在功能上类似于 ItemReader,但属于相反的操作。 资源仍然需要定位,打开和关闭, 区别就在于在于ItemWriter 执行的是写入操作(write out), 而不是读取。 在使用数据库或队列的情况下,写入操作对应的是插入(insert
),更新(update
),或发送(send
)。 序列化输出的格式依赖于每个批处理作业自己的定义。
和 ItemReader 接口类似, ItemWriter 也是个相当通用的接口:
public interface ItemWriter<T> {
void write(List<? extends T> items) throws Exception;
}
类比于ItemReader中的read
, write
方法是ItemWriter 接口的根本方法; 只要传入的 items 列表是打开的,那么它就会尝试着将其写入(write out)。 因为一般来说, items 将要被批量写入到一起,然后再输出, 所以write
方法接受一个List 参数,而不是单个对象(item)。 list 被输出后, 在write
方法返回(return)之前, 对缓冲执行刷出(flush)操作是很必要的。 例如, 如果使用 Hibernate DAO 时, 对每个对象要调用一次DAO写操作, 操作完成之后, 方法 return 之前, writer 就应该关闭 hibernate 的 Session会话。