Duvida sobre dispose();

Boas pessoal!

bom sou novo no forum, e também iniciante em java.

A minha duvida é, supomos que eu tenho JFrame aberto e neste JFrame abro uma conexão com o banco na inicializacão…
O que gostaria de saber é sê: Quando executo o metodo dispose(); ele fecha a conexão com o banco, ou mantém a conexão ativa?

apreveitando, vi um esquema de executar um metodo quando JFrame for dado dispose(); , porém não sei aonde coloca-lo.
Agradeço desde já, abaixo vai meu codigo se alguem puder me informar aonde colocar e o codigo, ficaria muito grato mesmo.

import java.sql.*;
import classes.md5;
import classes.conexaoMysql;
import javax.swing.JOptionPane;

public class telaLogin extends javax.swing.JFrame {
    conexaoMysql con_usuario;
    
    public telaLogin() {
        initComponents();
        con_usuario = new conexaoMysql();
        con_usuario.conecta();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        tfUsuario = new javax.swing.JTextField();
        pfSenha = new javax.swing.JPasswordField();
        L_Usuario = new javax.swing.JLabel();
        L_Senha = new javax.swing.JLabel();
        L_Logo = new javax.swing.JLabel();
        bEntrar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("GPA - Login");
        setName("FrameLogin"); // NOI18N
        setResizable(false);

        L_Usuario.setText("Usuário");

        L_Senha.setText("Senha");

        L_Logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/krfb.png"))); // NOI18N

        bEntrar.setText("Entrar");
        bEntrar.setFocusPainted(false);
        bEntrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bEntrarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(L_Logo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(L_Senha)
                    .addComponent(L_Usuario))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(bEntrar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(pfSenha, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)
                    .addComponent(tfUsuario))
                .addContainerGap(24, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(23, 23, 23)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(L_Usuario)
                            .addComponent(tfUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(pfSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(L_Senha))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(bEntrar))
                    .addComponent(L_Logo, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-310)/2, (screenSize.height-180)/2, 310, 180);
    }// </editor-fold>                        

private void bEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(tfUsuario.getText().trim().isEmpty() && pfSenha.getText().trim().isEmpty()) {
        JOptionPane.showMessageDialog(null, "Preencha todos os campos!", "Campo Obrigatório", JOptionPane.ERROR_MESSAGE);
        tfUsuario.setText("");
        pfSenha.setText("");
        tfUsuario.grabFocus();
    } else {
        if(tfUsuario.getText().trim().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Preencha o campo usuário!", "Campo Obrigatório", JOptionPane.ERROR_MESSAGE);
            tfUsuario.setText("");
            tfUsuario.grabFocus();
        } else {
            if(pfSenha.getText().trim().isEmpty()) {
                JOptionPane.showMessageDialog(null, "Preencha o campo senha!", "Campo Obrigatório", JOptionPane.ERROR_MESSAGE);
                pfSenha.setText("");
                pfSenha.grabFocus();
            } else {
                try {
                    con_usuario.executeSQL("SELECT * from Usuarios WHERE usu_login='"+tfUsuario.getText()+"' AND usu_senha='"+md5.Converter(pfSenha.getText())+"'");
                    
                    if(con_usuario.resultset.first()) {
                        new TelaPrincipal().show();
                        TelaPrincipal.tfUsuarioValor.setText(con_usuario.resultset.getString("usu_login"));
                        TelaPrincipal.tfNomeValor.setText(con_usuario.resultset.getString("usu_nome"));
                        con_usuario.desconecta();
                        dispose();
                    } else {
                        JOptionPane.showMessageDialog(null,"Usuário ou Senha invalida.");
                        tfUsuario.setText("");
                        pfSenha.setText("");
                        tfUsuario.grabFocus();
                    }
                } catch(SQLException ErroSql){
                    JOptionPane.showMessageDialog(null, ErroSql, "Erro ao executar sql!",JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }    
}                                       

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new telaLogin().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel L_Logo;
    private javax.swing.JLabel L_Senha;
    private javax.swing.JLabel L_Usuario;
    private javax.swing.JButton bEntrar;
    private javax.swing.JPasswordField pfSenha;
    private javax.swing.JTextField tfUsuario;
    // End of variables declaration                   
}

Se você não deu “close” na conexão, ela continua aberta*.
Dispose e close são coisas diferentes.

  • Tecnicamente, se não houver mais nenhuma referência para essa conexão, então ela será encerrada na segunda vez em que o garbage collector efetuar uma “full garbage collection”, ou seja, pode demorar muito para que a conexão caia sozinha. Ou seja, é melhor você fechar explicitamente a conexão, porque conexões com o banco são objetos escassos e devem ser usadas com parcimônia.

Procure por “WindowListener” e “Window Closing” para ver onde você pode pôr um código que será executado quando a janela for fechada.

Opa valeu pela dica, vou dar uma pesquisada… abraços

bom fica aqui a dica que me ajudou, consegui resolver o problema… obrigado.

http://www.guj.com.br/posts/list/2126.java#10379