Projeto criado para "bufferizar" objetos antes de serem consumidos.
Utilização: Para armazenar objetos que serão processados em bulk (inserção/atualização em batch no banco de dados, por exemplo).
Buffer<MyObject> buffer = AutomaticExecutionBufferBuilder.<MyObject>
execute(Repository::save)
.whenBufferSizeIs(2000)
.handling(SQLException.class).with(()-> handleSQLException())
.build();Com o código acima, o buffer está pronto para receber objetos até o limite de 2000. Quando chegar no limite, o método save da classe Repository será executado passando como parâmetro os 2000 objetos do buffer.
MyObject aObject = ...;
buffer.add(aObject)`Obs.: O método passado no
executedeve obrigatoriamente receber uma Collection do tipo de dados que está sendo armazenado no buffer, e deve possuir um retorno (isso será melhorado em uma futura versão).
Qualquer exceção do tipo SQLException será tratada pelo método handleSQLException(). Caso ocorra exceção de outro tipo, e/ou no for declarado nenhum tratamento de exceção, a mesma será somente logada pelo log4j no nível error.