Boa tarde, estou fazendo um sistema simples que tem apenas um CRUD para praticar, e comecei a receber um erro ao tentar editar varias vezes os dados que tenho no meu banco, estou utilizando JPA, Hibernate e MySQL. Ex: se eu editar uma vez ou duas qualquer instancia funciona de boa, o problema só ocorre se continuar testando e editando os itens e tanto faz se estou editando o mesmo ou outro, parece que tem um limite de edições que posso fazer!
@Override
public String executa(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String cnpj = request.getParameter("cnpj");
String razaoSocial = request.getParameter("razaoSocial");
String logradouro = request.getParameter("logradouro");
String bairro = request.getParameter("bairro");
String numero = request.getParameter("numero");
String cep = request.getParameter("cep");
String cidade = request.getParameter("cidade");
EmpresaDao dao = new EmpresaDao();
Empresa empresa = (Empresa) dao.getEmpresaById(cnpj);
EnderecoDao daoend = new EnderecoDao();
Endereco endereco = daoend.findEndereçoEmpresa(empresa);
empresa.setCnpj(cnpj);
empresa.setRazaoSocial(razaoSocial);
endereco.setLogradouro(logradouro);
endereco.setBairro(bairro);
endereco.setNumero(numero);
endereco.setCep(cep);
endereco.setCidade(cidade);
empresa.setEndereco(endereco);
endereco.setEmpresa(empresa);
dao.alterar(empresa, endereco);
return "redirect:controller?acao=ListarEmpresas";
}
public Empresa getEmpresaById(String cnpj) {
EntityManager manager = new FabricaConexao().getEntityManager();
manager.getTransaction().begin();
String sql = "select e from Empresa as e where e.cnpj= :pCNPJ";
Query query = manager.createQuery(sql);
query.setParameter("pCNPJ", cnpj);
Empresa empresa = (Empresa) query.getSingleResult();
manager.close();
return empresa;
}
public Endereco findEndereçoEmpresa(Empresa empresa) {
EntityManager manager = new FabricaConexao().getEntityManager();
manager.getTransaction().begin();
String sql = "select e from Endereco as e where e.empresa.cnpj = :pEmpresaCnpj";
Query query = manager.createQuery(sql);
query.setParameter("pEmpresaCnpj", empresa.getCnpj());
Endereco endereco = (Endereco) query.getSingleResult();
manager.getTransaction().commit();
manager.close();
return endereco;
}
public void alterar(Empresa empresa, Endereco endereco) {
EntityManager manager = new FabricaConexao().getEntityManager();
manager.getTransaction().begin();
manager.merge(empresa);
manager.merge(endereco);
manager.getTransaction().commit();
manager.close();
}
Exception: The internal connection pool has reached its maximum size and no connection is currently available
Alguém sabe como resolver esse problema ?