Olá pessoal,
Estou precisando implementar um módulo em Java que consulta coleção de objetos do banco de dados (Oracle) e para cada uma dos objetos serviço externo é executado passando o objeto para processamento. A coleção de objetos pode ter no máximo 60k objetos e no mínimo 5k.
A minha dúvida consiste na escolha da melhor solução dentre as seguintes opções.
1-Implementar um DAO stateless com um método que recupera do Oracle uma coleção com todos os objetos e retorna para a classe de negócio que irá chamar o serviço externo para cada um dos objetos. Neste caso, todos os objetos (5k-60k) foram recuperados primeiro do Oracle, armazenados na memória da aplicação, e depois enviados um a um para o serviço externo.
2-Implementar um DAO “stateful” com um método que consulta no Oracle a coleção com todos os objetos, mas não recupera todos os objetos de uma vez, e retorna apenas um objeto por vez para a classe de negócio, que irá chamar o serviço externo para o objeto. Neste caso, a medida que um objeto é recuperado o serviço externo é executado e não há necessidade de armazenar na memória da aplicação todos os objetos.
Ao final da execução o DAO não seria mais utilizado.
Conto com a colaboração de vocês.
Obrigado,
Mardoqueu.