Bom dia pessoal,
estou fazendo um comparativo entre tecnologias e uma delas é a persistencia em um banco com JPA-Hibernate
Tenho de persistir 1000 objetos de uma vez só e medir o tempo de persistencia, to uzando o Firebrid.
O processo ta funcionando corretamente mas acho que estou fazendo algo que ta deixando o processo pesado, e isso pode estar interfirindo no tempo de persistencia.
Acho que estou abrindo o banco a cada vez que persisto um objeto acho que teria de abrir uma vez só, mas não sei se é de propriedade do hibernate ter de abrir a cada inserção.
Vou enviar o código e se tiver como alguem me orientar melhor agradeço desde já.
esse é o dao
public class Dao {
protected EntityManager em;
private EntityManagerFactory emf;
private final String NAME = "JFPU";
/**Nome da Unidade de Persistencia**/
public void open() {
/**Abre Conexao com banco**/
if (emf == null || !emf.isOpen()) {
emf = Persistence.createEntityManagerFactory(NAME);
}
em = emf.createEntityManager();
if (em == null) {
try {
} catch (RuntimeException e) {
System.out.println(e.getMessage());
}
}
}
public void close() {
/**Fecha Conexao com banco**/
try {
if (em != null) {
em.close();
}
if (emf != null) {
emf.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
esse é o código do clienteDao
public void salvarCliente(Cliente cliente) {
open(); // método hedado de Dao para abrir conexão com o banco de dados
long init = 0;
long end = 0;
long diff;
init = System.currentTimeMillis();
try {
em.getTransaction().begin();
em.persist(cliente);
} catch (Exception e) {
System.out.println(e.getMessage());
em.getTransaction().rollback(); // desfaz transacao se ocorrer erro ao persitir
} finally {
if (em.getTransaction().isActive()) {
em.getTransaction().commit();
}
close();
end = System.currentTimeMillis();
diff = end - init;
System.out.println("Tempo de resposta = " + (diff / 1000.0) + " segundos em JPA - Hibernate");
}
}
aqui quando crio os 1000 itens a inserir
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jpa;
import Dao.ClienteDao;
import java.util.ArrayList;
import java.util.List;
import modelo.Cliente;
/**
*
* @author Carlos Sales
*/
public class incluir {
public static void main(String[] args) {
List<Cliente> clientes = new ArrayList<>();
Cliente clienteA;
long init = 0;
long end = 0;
long diff;
init = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
clienteA = new Cliente();
Cliente cliente = new Cliente();
ClienteDao clienteDao = new ClienteDao();
cliente.setBairro("Cambé V");
cliente.setCelular("8428-5368");
cliente.setCep("111111111-22");
cliente.setCidade("Cambé");
cliente.setComplemento("Casa");
cliente.setContato("Ananias");
cliente.setCpfcnpj("818181818181818");
cliente.setEmail("[email removido]");
cliente.setEndereco("Av. Patrocíneo Brandão Mac, 123");
cliente.setEstado("PR");
cliente.setNome("Carlos Alberto Sales");
cliente.setNumero("328");
cliente.setObs("Cliente antigo");
cliente.setRgie("[telefone removido]");
cliente.setSexo("M");
cliente.setTelefone("3223-99000");
clienteDao.salvarCliente(cliente);
clientes.add(clienteA);
}
}
}
no aguardo.