Estes Objetos são diferentes, mas estas Threads são iguais?

Galera minha dúvida é a seguinte:

Para conexão com o MySQL eu tenho esta classe:



import com.mysql.jdbc.exceptions.jdbc4.CommunicationsException;
import com.mysql.jdbc.*;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import mxalmox.configuracoes.sistema.PropriedadesConfig;
import mxalmox.logs.GeradorLog;


/**
 *
 * @author TcHéLo
 * 
 */


public class FabricaDeConexao {

    
    private static String DRIVER = "com.mysql.jdbc.Driver";
    private static String PARAMETRO; 
    private static Connection con;    
    private static GeradorLog gerador = new GeradorLog(FabricaDeConexao.class);
    
   
    
    public static void criaConexao() throws SQLException, CommunicationsException{
        
        
        FabricaDeConexao.PARAMETRO = "jdbc:mysql://" + PropriedadesConfig.getSERVIDOR()+
                                     ":" + PropriedadesConfig.getPORTA() +
                                     "/" + PropriedadesConfig.getBANCO();
                 
        
        try {
            
            Class.forName(DRIVER);
            con = (Connection) DriverManager.getConnection( FabricaDeConexao.PARAMETRO, 
                                                            PropriedadesConfig.getUSUARIO_BANCO(), 
                                                            PropriedadesConfig.getSENHA_BANCO() );
            
        } catch (ClassNotFoundException e) {
           
            JOptionPane.showMessageDialog(null, "Driver de Conexao à Central não Encontrado", e.getMessage() , JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            gerador.mostraLogError(e.getMessage());
            gerador.gravaLogError(e.getMessage());
            
            
        } 

    }
    
    public static Connection pegaConexao() throws SQLException{
        if(con.isClosed())
            return null;
        else
            return con;
    }   

    public static void fechaConexao() throws SQLException, Exception{
        if(!con.isClosed())
            con.close();
    }

Aí eu tenho o método criaConexao() para justamente criar a conexão com o MySQL e jogar em minha Connection con.

Também tenho o método pegaConexao() para retornar a minha Connection con.

Suponhamos que em outra classe eu tenha este código:


FabricaDeConexao.criaConexao();

Connection con   = FabricaDeConexao.pegaConexao();

Connection con2 = FabricaDeConexao.pegaConexao();

Neste código eu tenho dois objetos, con e con2, diferentes. Porém tenho apenas uma conexão aberta com o banco de dados.

Estes meus objetos, são threads diferentes?

Posso fazer um LOCK TABLE que será travada para os dois objetos??

Valeuuuu…

na verdade theads nao tem nada a ver com isso…

não entendi a pergunta: "Posso fazer um LOCK TABLE que será travada para os dois objetos?? "

Certo…

Visto do ponto de visto do MySQL, queria saber se estes meus objetos, por serem diferente, representam novas threads no MySQL.

Porque o LOCK TABLE trava apenas para um Thread num é?

E os dois objetos são iguais. Só as referencias são diferentes.

Isso, exato Mark… mas as instruções pro MySQL são as enviadas como vindas de um mesmo lugar ou de lugares diferentes?

Não sei se estou conseguindo me expressar bem…rssss

As duas vem da mesma Connection.

Se o problemas fosse Threads voce ia confundir a Connection passando varias instruções diferentes.

O mais interessante para o banco de dados é abrir a sessão, utiliza-la e fechar. Não ficar deixando aberta na memória.

Entendi Mark…

Essa foi só uma dúvida que me surgiu…

Beleza valeu brother

Bem, se vc quer necessariamente que seja a mesma conexão sempre, sugiro criar um singleton da conexão.
Uma vez criada, ele não pode ser criada novamente. Será apenas referenciada.

E, como o Mark_Ameba disse, sempre q terminar de usar, feche-a, senão irá consumir o seu servidor.

Abraços