Senhores,
Bom dia
Estou com um problema na lentidão de uma aplicação que faz algumas veririfcações.
Como esse é meu primeiro projeto que está indo para produção, e eu não tenho ninguém na empresa que pode me ajudar, então conto com a cooperação de todos.
Eu estou fazendo uma aplicação que vai fazer a marcação do ponto dos funcionarios.
Porem não sei o que acontece, mas na maquina que estou fazendo o desenvolvimento está perfeito, super rapido sem problemas.
Só que quando tento conectar no server(linux) da empresa(onde está instalado o banco mysql), fica muito lento (+ou- uns 30 segundos p/ responder).
Só que o cara que cuida da infra aqui, ta dizendo que estou criando muitas conexões no banco e é isso que esta prejudicando.
Então estou perdido, não sei o que fazer.
Estou colocando os codigos de conexao para que puder me ajudar, muito obrigado.
public class ConexaoDB {
private static final String URL_MYSQL = "jdbc:mysql://192.168.8.4/controlehoras";
private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
private static final String USER = "mateus";
private static final String PASS = "102030";
public static Connection getConnection() {
System.out.println("Conectando ao Banco de Dados");
try {
Class.forName(DRIVER_CLASS);
return DriverManager.getConnection(URL_MYSQL, USER, PASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return null;
}
}
public abstract class GenericDao {
private static Connection connection;
protected GenericDao() {
this.connection = ConexaoDB.getConnection();
}
protected Connection getConnection() {
return connection;
}
protected void save(String insertSql, Object... parametros) throws SQLException {
PreparedStatement pstmt = connection.prepareStatement(insertSql);
for (int i = 0; i < parametros.length; i++) {
pstmt.setObject(i+1, parametros[i]);
}
pstmt.execute();
pstmt.close();
System.out.println("Conexão Fechada");
}
protected void update(String updateSql,Object... parametros) throws SQLException {
PreparedStatement pstmt = connection.prepareStatement(updateSql);
for (int i = 0; i < parametros.length; i++) {
pstmt.setObject(i+1, parametros[i]);
}
pstmt.executeUpdate();
pstmt.close();
System.out.println("Conexão Fechada");
}
protected void delete(String deleteSql, Object... parametros) throws SQLException {
PreparedStatement pstmt = connection.prepareStatement(deleteSql);
for (int i = 0; i < parametros.length; i++) {
pstmt.setObject(i+1, parametros[i]);
}
pstmt.execute();
pstmt.close();
}
}
public class ValidarLogin {
//Variavel global para idusuario
private static int varUser ;
public static void setVarUser(int arg) {
varUser = arg;
}
public static int getVarUser() {
return varUser;
}
//Verifica se o usuario está correto no banco e seu senha
public static Usuario validar(String nome, String senha) throws SQLException {
String select = "SELECT idusuario FROM usuario WHERE nome = ? and senha = ?";
Usuario usuario = null;
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setString(1,nome);
stmt.setString(2,senha);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
usuario = new Usuario();
usuario.setIdusuario(rs.getInt("idusuario"));
//Setando a variavel global
ValidarLogin.setVarUser(usuario.getIdusuario());
System.out.println("IdUsuario = " + ValidarLogin.getVarUser());
}else{
usuario = new Usuario();
usuario.setIdusuario(0);
}
rs.close();
System.out.println("Conexão Fechada");
//stmt.close();
return usuario;
}
public Usuario verificaUsuario(int idusuario) throws SQLException {
String select = "SELECT idusuario FROM usuario WHERE idusuario = ?";
Usuario usuario = null;
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
//teste
//if (rs.next()){
if (rs.first()){ //testando First em vez de Next -- Ok funfa!
usuario = new Usuario();
usuario.setIdusuario(rs.getInt("idusuario"));
}else{
//usuario = new Usuario();
return null;
}
rs.close();
stmt.close();
return usuario;
}
public String retornaNome(int idusuario) {
String select = "SELECT nome_completo FROM usuario WHERE idusuario = ?";
//Usuario usuario = null;
String nomec = null;
try{
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
//usuario = new Usuario();
nomec = rs.getString("nome_completo");
}
rs.close();
stmt.close();
return nomec;
}catch (SQLException e){
System.out.println("erro no metodo retornaNome da classe ValidarLogin");
}return nomec;
}
public String retornaEntrada(int idusuario) {
String select = "SELECT entrada FROM tabcontrole WHERE cod_func = ? and data_cont = curdate()";
//Usuario usuario = null;
String entradaUser = null;
try{
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
//usuario = new Usuario();
entradaUser = rs.getString("entrada");
}
rs.close();
stmt.close();
return entradaUser;
}catch (SQLException e){
System.out.println("erro no metodo retornaNome da classe ValidarLogin");
}return entradaUser;
}
public String retornaSaida(int idusuario) {
String select = "SELECT saida FROM tabcontrole WHERE cod_func = ? and data_cont = curdate()";
//Usuario usuario = null;
String entradaUser = null;
try{
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
if (rs.first()){
//usuario = new Usuario();
entradaUser = rs.getString("saida");
}
rs.close();
stmt.close();
return entradaUser;
}catch (SQLException e){
System.out.println("erro no metodo retornaNome da classe ValidarLogin");
}return entradaUser;
}
public String retornaAlmoco(int idusuario) {
String select = "SELECT almoco FROM tabcontrole WHERE cod_func = ? and data_cont = curdate()";
String entradaUser = null;
try{
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
entradaUser = rs.getString("almoco");
}
rs.close();
stmt.close();
return entradaUser;
}catch (SQLException e){
System.out.println("erro no metodo retornaNome da classe ValidarLogin");
}return entradaUser;
}
public String retornaVolta(int idusuario) {
String select = "SELECT volta FROM tabcontrole WHERE cod_func = ? and data_cont = curdate()";
String entradaUser = null;
try{
PreparedStatement stmt = ConexaoDB.getConnection().prepareStatement(select);
stmt.setInt(1,idusuario);
ResultSet rs = stmt.executeQuery();
if (rs.next()){
entradaUser = rs.getString("volta");
}
rs.close();
stmt.close();
return entradaUser;
}catch (SQLException e){
System.out.println("erro no metodo retornaNome da classe ValidarLogin");
}return entradaUser;
}
}
Obrigado!