Olá amigos tenho duas tabelas em um projeto aqui um responsavel pelo armazenamento das UF e outra dos MUNICIPIOS do brasil
ao executar uma query para listar todas a cidades da base de dados o mysql esta demorando (tempo total: 5 minutos 34 segundos) para listar pouco mais de
5 mil registros que contem nessa entidade alguem sabe oq pode ser isso ?
segue os códigos e imagem das entidades da base de dados
Classe conexão
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConexaoMySQL {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/dados_freedom";
private String usuario = "root";
private String senha = "mysqls3rv3r";
protected PreparedStatement pstm;
protected Statement stm;
protected ResultSet rs;
//conecta na base de dados
public Connection getConexao() throws Exception {
Class.forName(driver);
Connection con = DriverManager.getConnection(url, usuario, senha);
return con;
}
//metodo statement
public Statement getStatement() throws Exception {
return getConexao().createStatement();
}
//prepara o SQL a ser executado na base de dados
public PreparedStatement getPreparedStatement(String sql) throws Exception {
return getConexao().prepareStatement(sql);
}
}
Modelos
Uf
* */
import java.io.Serializable;
import com.towel.el.annotation.Resolvable;
public class Uf implements Serializable {
private static final long serialVersionUID = 1L;
/*Atributos do objeto UF*/
@Resolvable(colName="Id")
private int id;
@Resolvable(colName="Codigo")
private String codigo;
@Resolvable(colName="Sigla")
private String sigla;
@Resolvable(colName="Nome")
private String nome;
@Resolvable(colName="Ativo")
private boolean ativo;
/*Gets e Sets dos atributos do objeto UF*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean status) {
this.ativo = status;
}
}
Municipio
import java.io.Serializable;
import com.towel.el.annotation.Resolvable;
public class Municipio implements Serializable{
/*
* Atributos do obj Municipio
* */
private static final long serialVersionUID = 1L;
@Resolvable(colName="id")
private int id;
@Resolvable(colName="Codigo uf")
private Uf iduf;
@Resolvable(colName="Codigo do municipio")
private String codigo;
@Resolvable(colName="Nome")
private String nome;
@Resolvable(colName="Cep")
private String cep;
@Resolvable(colName="Ativo")
private boolean ativo;
/*
* Metodos Gets e Sets
* */
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Uf getIduf() {
return iduf;
}
public void setIduf(Uf iduf) {
this.iduf = iduf;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
}
Daos
UfDAO
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedList;
import java.util.List;
public class UfDAO extends ConexaoMySQL {
public Uf getUf(long id) throws Exception {
PreparedStatement pst = null;
ResultSet rst = null;
Connection con = getConexao();
Uf uf = new Uf();
String SQL = "Select * from Uf Where uf.id = ?";
pst = getPreparedStatement(SQL);
pst.setLong(1, id);
rst = pst.executeQuery();
if (rst.next()) {
uf = populaUf(rst);
}
pst.close();
rst.close();
//con.commit();
con.close();
return uf;
}
public List<Uf> lista() throws Exception {
String sql = "Select * from Uf";
Connection con = getConexao();
PreparedStatement pst = null;
ResultSet rst = null;
Uf uf = new Uf();
List<Uf> listas = new LinkedList<Uf>();
pst = getPreparedStatement(sql);
rst = pst.executeQuery();
while (rst.next()) {
uf = populaUf(rst);
listas.add(uf);
}
pst.close();
rst.close();
//con.commit();
con.close();
return listas;
}
//popula uf
public Uf populaUf(ResultSet rs) throws Exception {
Uf uf = new Uf();
uf.setId(rs.getInt(1));
uf.setCodigo(rs.getString(2));
uf.setSigla(rs.getString(3));
uf.setNome(rs.getString(4));
uf.setAtivo(rs.getBoolean(5));
return uf;
}
}
MunicipioDAO
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedList;
import java.util.List;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Willian
*/
public class MunicipioDAO extends ConexaoMySQL {
UfDAO ufdao = new UfDAO();
public List<Municipio> listar() throws Exception {
List<Municipio> lista = new LinkedList<Municipio>();
String sql = "Select * from Municipio";
Connection con = getConexao();
PreparedStatement pst = null;
ResultSet rst = null;
Municipio m = new Municipio();
pst = getPreparedStatement(sql);
rst = pst.executeQuery();
while(rst.next()){
m = populaMunicipio(rst);
lista.add(m);
}
pst.close();
rst.close();
con.close();
return lista;
}
public Municipio populaMunicipio(ResultSet rs) throws Exception {
Municipio m = new Municipio();
m.setId(rs.getInt(1));
m.setIduf(ufdao.getUf(rs.getInt(2)));
m.setCodigo(rs.getString(3));
m.setNome(rs.getString(4));
m.setCep(rs.getString(5));
m.setAtivo(rs.getBoolean(6));
return m;
}
}
Classe para listar os registros
import java.util.LinkedList;
import java.util.List;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Willian
*/
public class Main {
public static void main(String[] args) {
List<Municipio> lista = new LinkedList<Municipio>();
try {
lista = new MunicipioDAO().listar();
for(int i=0; i<lista.size();i++){
System.out.println(lista.get(i).getNome()+" - "+lista.get(i).getIduf().getSigla()+"\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
imagem do DER