Boa tarde pessoal.
Estou desenvolvendo um sistema que importa um grande volume de informações para o banco.
Por questões de performance decidi usar multithread.
Porém, tem alguns pontos que não estão claros pra mim:
Em cada operação no banco, crio um novo EntityManager usando EntityManagerFactory com singleton.
Meu sistema apenas cadastra objetos no banco, sem deleção ou alteração de dados.
O método básico de inserção que estou usando é o seguinte:
public void cadastrarObjeto(Objeto o) {
if (em.find(Objeto.class, o.getId()) == null) {
em.getTransaction().begin();
em.persist(o);
em.getTransaction().commit();
em.close();
} else {
return;
}
}
Meu sistema roda em um websphere 6.1 com DB2 6.5
Não sei se este código poderia rodar em um ambiente multithread sem problema ou se deveria ser sincronizado e se é realmente necessário usar transaction ou fechar a conexão. Outro ponto: Neste caso eu estaria usando a connection pool do servidor?