Olá desenvolvedores, no tutorial anterior, “INSERT E DELETE: NEW TABLE”, fizemos o INSERT em linguagem SQL – Structured Query Language, pura. Agora o faremos por meio do JDBC – Java Database Connectivity, com Java. Utilizaremos os mesmos recursos que temos usado até o momento, em outras palavras significa que usaremos o DAO da classe “UserPosDAO”.
CLASSE MODEL
Mas ainda não temos criada a classe Model. Trata-se de mais do que uma referência ao padrão de arquitetura MVC – Model-View-Controller. A classe modelo é a responsável pelo gerenciamento dos dados por meio da regra de negócio. Ela é a ponte entre as camadas de Visão (View) e Controle (Controller).
Para criá-la clique com o botão direto do mouse sobre o pacote model >> New >> Class e dê a classe o nome de “Telefone”. A classe telefone terá como atributo os mesmos já definidos no banco de dados, id e usuário que serão do tipo Long e as Strings número e tipo. Gere para todos os atributos os métodos setters and getters.
Public class Telefone{
private long id;
private long usuario;
private String tipo;
private String numero;
}
IMPLEMENTANDO O DAO
E sim, podemos reaproveitar a classe “UserPosDAO”, uma vez que telefone faz parte do contexto do usuário, não fugindo, dessa forma da regra de negócio. Assim, criaremos o método “salvarTelefone” que terá a seguinte assinatura e que receberá como parâmetro um objeto do tipo Telefone.
Public void salvarTelefone(Telefone telefone){
}
Dentro do escopo do método teremos o bloco de tratamento de erros e exceção o bloco try/cacth, cujo bloco catch traz aninhado outro bloco try/catch. O bloco try aninhado implementa uma instrução rollback para quando uma exceção for disparada. Dessa forma a instrução rollback determinará que todas as modificações de dados feitas até aquele ponto na transação atual sejam revertidas.
catch (Exception e) {
try{
connection.rollback();
}catch (SQLException e1){
e1.printStackTrace();
}
e.printStackTrace();
}
A instrução catch principal implementa entre parênteses uma máscara SQL da query de insert.
String sql = “INSERT INTO public.telefoneuser (numero, tipo, usuariopessoa) VALUES (?, ?, ?)”;
Instancie o objeto PreparedStatement cuja responsabilidade será inserir o registro. Esta atualização será feita a partir do objeto connection invocando a instrução prepareStatement que recebe o sql que instanciamos na linha de código acima. Na sequência “setaremos” os parâmetros.
PreparedStatement preparedstatement = connection.prepareStatement(sql);
statement.setString(1, telefone.getNumero());
statement.setString(2, telefone.getTipo());
statement.setLong (3, telefone.getUsuario());
E então o executaremos, e para gravar as alterações após deletarmos um dado registro, daremos um commit.
preparedstatement.execute();
connection.commit();
IMPLEMENTANDO A CLASSE DE TESTE
E por fim, para rodarmos um teste implementaremos na classe de Teste o método testeInsertTelefone. Onde instanciaremos o objeto telefone, e “setaremos” os respectivos atributos.
public void testeInsertTelefone() {
Telefone telefone = new Telefone();
telefone.setNumero("(21) 9 4545-4545");
telefone.setTipo("CEL");
telefone.setUsuario(12L);
Ainda dentro do escopo do método testeInsertTelefone será necessário também a instanciação do objeto DAO, para qual passaremos o objeto telefone.
UserPosDAO dao = new UserPosDAO();
dao.salvarTelefone(telefone);
EM POUCAS PALAVRAS
Utilizando o Java fizemos o INSERT com o JDBC, em que inserimos mais um registro telefônico na tabela “telefoneuser”. Espero que tenham entendido e que pratiquem para que possam assimilar bem esses conceitos.
É importante entender não só o que fizemos aqui no Java, mas também os conceitos de bancos de dados, como chave primária, chave estrangeira, cardinalidade e o relacionamento entre as tabelas. Eu fico por aqui, nos vemos no próximo tutorial.