Galera estou com um problema, um exemplo tenho 1000 registros para adicionar em algumas tabelas, onde dentro desse processo 7 movimentação no banco, 4 select e 3 inserts.
Depois de um tempo mais ou menos quando já inseriu 500 registros, o processo fica extremamente lento, inserindo um por vez. Podem me ajudar?
Sempre que consulto ou realizado a inserção eu utilizo o comando ClienteJpaDAO.getInstance()
.CLASSEQUEVOUFAZEROPERACAOABAIXO
public class ClienteJpaDAO {
private static ClienteJpaDAO instance;
protected EntityManager entityManager;
public static ClienteJpaDAO getInstance(){
if (instance == null){
instance = new ClienteJpaDAO();
}
return instance;
}
private ClienteJpaDAO() {
entityManager = getEntityManager();
}
private EntityManager getEntityManager() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("crudHibernatePU");
if (entityManager == null) {
entityManager = factory.createEntityManager();
}
return entityManager;
}
public Object persist(Object cliente) {
try {
entityManager.getTransaction().begin();
entityManager.persist(cliente);
entityManager.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
return cliente;
}
public tabelab merge(tabelab cliente) {
Object toreturn = null;
try {
entityManager.getTransaction().begin();
toreturn = entityManager.merge(cliente);
entityManager.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
return (tabelab) toreturn;
}
public void merge3(tabelac cliente) {
try {
entityManager.getTransaction().begin();
entityManager.merge(cliente);
entityManager.getTransaction().commit();
} catch (Exception ex) {
ex.printStackTrace();
entityManager.getTransaction().rollback();
}
}
public tabelab validarLogin(String codigo){
tabelab cliente = new tabelab();
try{
Query query = entityManager.createQuery("select a from tabelab as a "+
"where a.codigo = :paramFinalizado");
query.setParameter("paramFinalizado", codigo);
cliente = (tabelab) query.getSingleResult();
//caso nao exista BD nao retorna null
} catch(Exception ex){
return cliente;
}
return cliente;
}
public int consultarcat(String nome_exibicao){
int valor = 0;
// EntityManager em = getEntityManager();
try{
Query query = entityManager.createQuery("select id from item_cat as a "+
"where a.nome_exibicao = :paramFinalizado");
query.setParameter("paramFinalizado", nome_exibicao);
valor = (int) query.getSingleResult();
//caso nao exista BD nao retorna null
}
catch(Exception ex){
return 0;
}
return valor;
}
public String validarDadosTmp(String codigo, String uf, int mes, int ano, int desoneradoOuN) {
String codigo1 = null;
try {
Query query = entityManager.createQuery("select a.codigo from tabelab as a" +
" where a.codigo = :paramFinalizado" +
" and a.unidade_federativa = :paramFinalizado2" +
" and a.mes = :paramFinalizado3" +
" and a.ano = :paramFinalizado4" +
" and a.desonerado = :paramFinalizado5");
query.setParameter("paramFinalizado", codigo);
query.setParameter("paramFinalizado2", uf);
query.setParameter("paramFinalizado3", mes);
query.setParameter("paramFinalizado4", ano);
query.setParameter("paramFinalizado5", desoneradoOuN);
codigo1 = (String) query.getSingleResult();
// caso nao exista BD nao retorna null
} catch (Exception ex) {
return codigo1;
} finally{
//instance.
}
return codigo1;
}
public tabelaz validar(String codigo, int mes, int ano, int idUf) {
tabelaz teste = new tabelaz();
try {
Query query = entityManager.createQuery("select t2 from tabelau as t1, tabelaz as t2" +
" where t1.id = t2.id_insumo" +
" and t1.codigo = :paramFinalizado" +
" and t2.mes = :paramFinalizado2" +
" and t2.ano = :paramFinalizado3" +
" and t2.id_uf = :paramFinalizado4");
query.setParameter("paramFinalizado", codigo);
query.setParameter("paramFinalizado2", mes);
query.setParameter("paramFinalizado3", ano);
query.setParameter("paramFinalizado4", idUf);
teste= (tabelaz) query.getSingleResult();
// caso nao exista BD nao retorna null
} catch (Exception ex) {
return teste;
}
return teste;
}}