Aperfeiçoando o conhecimento em java com banco

Estundando e tentando melhora fiz um código de conexão esta funcionando porém eu gostaria de comentários para melhorar. Esse exemple que fiz é com Statement, depois vou fazer com PreparedStatement.
Então fiz da seguinte forma.
Fiz a class de conexão dessa forma:

/*
 * Conexao.java
 *
 * Created on 22 de Maio de 2007, 21:00
 */

package conexao;
 
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



/**
 *
 * @author alexandre
 * @version
 */
public class Conexao {
 	
 	private static String NAME	= "com.mysql.jdbc.Driver";
 	private static String URL	= "jdbc:mysql://localhost/basedados";
 	private static String LOGIN	= "root";
 	private static String PASS	= "";
        private static Connection conn;
 	
 	/**
 	 * 
 	 * @return Conexao.
 	 * @throws SQLException
 	 * @throws IOException
 	 */
 	public static Connection connect() throws SQLException, IOException {
 		
 		try {
 			Class.forName(NAME);
 			conn = DriverManager.getConnection(URL, LOGIN, PASS);
 		} catch (ClassNotFoundException e) {
 			System.out.print("\nNão foi possível estabelecer conexão com a base de dados.\n");
 			e.printStackTrace();
 			return null;
 		}
 		return conn;
 	}
 }

E uso essa conexão em outra class da seguinte forma:

/*
 * DAO_usuario.java
 *
 * Created on 22 de Maio de 2007, 21:44
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package DAO;

import java.io.*;
import java.net.*;
import java.util.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

import conexao.Conexao;

/**
 *
 * @author alexandre
 */
public class DAO_usuario 
{
    
    public String usuario;
    public String senha;
    public String consulta;
    public String logado;
    public String outros;
    
    private ResultSet rs;
    private Connection conn;
    private Statement sql;
  
    
      
    public void DAO_dados(String getUsuario, String getSenha) throws SQLException, IOException
    {
      
            conn = Conexao.connect(); 
            sql = conn.createStatement();   
            
            
            usuario = getUsuario; 
            senha = getSenha;
       
            consulta = "select * from senhadeals where senha='"+senha+"' and usuario='"+usuario+"' limit 1  ";
            
            
            rs = sql.executeQuery(consulta);
            
            
            while(rs.next())
            {
                logado = rs.getString("nome");
            }
        
        
        
       
    }

   public void DAO_outros(String getOutros) throws SQLException, IOException
    {
      
            conn = Conexao.connect(); 
            sql = conn.createStatement();   
            
            
            outros = getOutros; 

            consulta = "select * from tabela2 where outros='"+outros+"'  limit 1  ";
            
            
            rs = sql.executeQuery(consulta);
            
            
            while(rs.next())
            {
                resultado = rs.getString("outros");
            }
        
        
        
       
    }
    
    public String setLogado()
    {
        return logado;
    }

    public String setOutros()
    {
        return outros;
    }
    
    
}

Eu tenho a class que faz a conexão e a class que usa a conexão. O código esta funcionando. Acho apenas que essa class DAO_usuario tem uma falha não sei se é uma falha ou se é dessa forma mesmo! Eu me refiro ao seguinte eu tenho dois métodos que são:
1) public void DAO_dados(String getUsuario, String getSenha) throws SQLException, IOException
2) public void DAO_outros(String getOutros) throws SQLException, IOException

Em cada um desses métodos eu chamo o comando:
conn = Conexao.connect();
Tenho que chamar ele em cada método mesmo ou tem alguma forma de chamar ele apenas em algum lugar dessa classe e ja sirva para todos os métodos? É a única dúvida que ficou.

Uma possibilidade seria colocar essa chamada em um método construtor.

E ae blz

como assim cara? Já tentei fazer mas não consegui! Ma da um exemplo por favor

No código da tua classe DAO_usuario, adicione isto:

public DAO_usuario(){
       conn = Conexao.connect();
}
 

e remova estas chamadas conn = Conexao.connect(); do resto do código

Cara funcionou legal.
Eu estava tentando fazer assim
[b]public Connection getConnetion()
{

}
[/b]
E não estava funcionando fiz da forma que vc falou e funfou

Valeu cara
at+

Outra forma seria você utilizar a Injeção de Dependências. Já que o seu DAO possui uma dependência com a classe Conexão, a instãncia dessa classe poderia ser passada via construtor ou via metódo set.

Já que é para aprimorar, dâ uma lida sobre o assunto: http://www.martinfowler.com/articles/injection.html

Valeu pela força carinha vou estudar o link que vc deixou e se eu travar eu posto.

Valeu a todos pela ajuda