Organização das Classes Para Simples Cadastros

Boa noite à todos, estou tentandor fazer algo simples aqui com a ajuda da comunidade, seria uma seleção, inserção remocao e alteracao de clientes

tenho a classe main ja…

package javaapplication;
import java.sql.SQLException;
import javaapplication.ConexMysql;

public class Main {
    public static void main(String[] args) {
        try {
            ConexMysql.conectando();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

e outra de conexao…

package javaapplication;
import java.sql.*;
public class ConexMysql{
        static Connection conn = null;
         public static void conectando() throws SQLException{
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();  
                conn = DriverManager.getConnection("jdbc:mysql://localhost/dbx?user=root&password=root");
            } catch (InstantiationException ex) {
                ex.printStackTrace();
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }

        }
}

À dúvida é a seguinte coloco o select junto à classe de conexao ou crio de inserção, alteração… separadas?

Desde já agradeço à todos
Boa noite à todos
ATT

Cria uma classe com a função de acessar teu banco de dados e fazer as operações CRUD. Para mais informação procura sobre o design pattern DAO.

Também sugiro você dar uma lida sobre as convenções nos códigos de Java. Uma delas e que os métodos sejam verbos. No teu caso, o método conectando() passaria a se chamar algo como conectar().

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

Procurei no google por Design Pattern DAO + CRUD, não achei muita coisa, muitas em inglês, o que ainda estou aprendendo…mas achei isso:

public interface CustomerDAO
{
  public void insert(Customer customer)
   throws CustomerDAOException;

  public void update(CustomerPK pk, Customer customer)
   throws CustomerDAOException;

  public void delete(CustomerPK pk)
   throws CustomerDAOException;

}

Pelo que vi uma interface com todos métodos, penso que iria ter que implementar na de conexão e implementaria todos códigos dos métodos na classe de conexão seria isso? estou no caminho certo? Isso é Design Pattern DAO? Procurei por CRUD mas achei apenas CRUD+Beans CRUD+Mentawaii, tão avançado para mim…o que é CRUD?

ATT

Opa, bão né?!!

C= CREATE
R= READ
U= UPDATE
D= DELETE

Quanto ao resto, vc deve criar a interface com os métodos contendo as operações básicas (CRUD) e depois implementar uma classe para cada tabela que vc tem no banco de dados.

Ex.:

Você tem uma tabela chamada Usuario. Então, vc deve ter uma classe Usuario.java onde vc terá os atributos do usuário, e irá implementar os métodos desta interface personalizando as operações que vc faz com o usuário.

Espero ter ajudado,

Rodrigo.

Bom dia, venho pedir ajuda da comunidade, por favor porque este erro?

Minha classe principal…

package javaapplication;
import java.sql.SQLException;
import javaapplication.ConexMysql;

public class Main {
    public static void main(String[] args) {
        try {
            ConexMysql.conectar();
            Cliente cli = new Cliente();
            cli.selectCliente();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Classe de Conexao

package javaapplication;
import java.sql.*;
public class ConexMysql{
        
         public static void conectar() throws SQLException{
        Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();  
                conn = DriverManager.getConnection("jdbc:mysql://localhost/dbx?user=root&password=root");
            } catch (InstantiationException ex) {
                ex.printStackTrace();
            } catch (IllegalAccessException ex) {
                ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }
        }
}

Minha interface___

package javaapplication;

public interface ClienteDAO {
    public void selectCliente();

}

Minha classe Cliente e tabela do DB__

package javaapplication;
import java.sql.*;
public class Cliente implements ClienteDAO{
    private int id = 0;
    private String nome = "";
    private String email= "";
    private int telefone = 0;
    private int celular = 0;
    

Métodos getters e setters omitidos

    static Connection conn = null;
    public void selectCliente(){
     
        try {
            Statement stm = conn.createStatement();
            String sql = "SELECT * FROM cliente";   
            ResultSet rs = stm.executeQuery(sql);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Porque este erro?

init:
deps-jar:
compile:
run:
Exception in thread “main” java.lang.NullPointerException
at javaapplication.Cliente.selectCliente(Cliente.java:44)
at javaapplication.Main.main(Main.java:12)
Java Result: 1
EXECUTADO COM SUCESSO (tempo total: 1 segundo)

Por favor Comunidade
Att.