Como separar a classe de conexão JDBC da classe de CRUD em um projeto Java?

0 respostas
L

Preciso desenvolver um projeto Java que faça o seguinte:
Em uma classe tenha a função de conexão JDBC ao postgresql.
Em outra classe tenha o modelo da entidade.
Em outra classe tenha as funções do CRUD.
Eu consegui fazer isso porém só quando a inserção é com os dados digitados no código mas eu queria que
fosse com a entrada de dados pelo usuário, usando a função Scanner.

Exemplo(código na mesma classe da conexao, inserindo com Scanner)
import java.sql.*;

import java.util.Scanner;

public class TesteJDBC {

public static void main(String args[]){

// Instancia o Objeto Scanner

Scanner sc = new Scanner(System.in);

try{

// Driver que será usado

Class.forName("org.postgresql.Driver");

// URL usada para conexão com o SGBD e BD

String url = "jdbc:postgresql://127.0.0.1:5432/locadora";

// Parametros para conexão

Connection con = DriverManager.getConnection(url,"postgres","aluno");

// Obtendo um Prepared Statement para executar comandos

String comando = "Insert INTO filmes(cd_filme, ds_filme)VALUES(?,?)";

PreparedStatement pstm = con.prepareStatement(comando);

// Armazenando os campos em "?" em variáveis

System.out.print("Digite o Número de Identificação: ");

int id = sc.nextInt();

System.out.print("Digite o Codigo do Filme: ");

long codigo = sc.nextLong();

System.out.print("Digite o Nome do Filme : ");

String nome = sc.next();

System.out.print("Digite a Descrição do Filme(Sem Espaços): ");

String descricao = sc.next();

// Inserindo as variáveis no comando sql no lugar de ?

pstm.setInt(1,id);

pstm.setLong(1,codigo);

pstm.setString(2,nome);

pstm.setString(3, descricao);

// Executa o comando

pstm.executeUpdate();

// Fecha o PreparedStatement

pstm.close();

// Consultas

String sql = "SELECT * FROM filmes";

Statement stm = con.createStatement();

ResultSet res = stm.executeQuery(sql);

while(res.next()){

int id_filme = res.getInt("id");

long codigo_filme = res.getLong("cod_filme");

String nome_filme = res.getString("nm_filme");

String descricao_filme = res.getString("ds_filme");

System.out.println("Id do Filme: " + id_filme + " | Codigo do Filme: " + codigo_filme + " | Nome do Filme: " + nome_filme + " | Descrição do Filme: " + descricao_filme);

// Fim das consultas


// Fecha a conexão

con.close();

}

}catch(Exception ex){

ex.printStackTrace();

ex.getMessage();

}

}

}

Como faço para inserir com a função scanner numa classe separada da conexão? E uma consulta também em classe separada da conexão?
Fico na dúvida de como escrever o método quando é por scanner e como chamá-lo. E o projeto deve ser MVC e ter camada DAO.

Depois ainda preciso alterar a DAO para que todas chamadas do projeto utilizem o Hibernate.

Criado 25 de setembro de 2019
Respostas 0
Participantes 1