Gente, seguinte… consegui finalmente colocar um CRUD pra funcionar com MVC, só que tem algo de estranho…
Seguinte: Toda vez que faço uma transação no DAO tenho que abrir a transação, conectar no jdbc, etc. etc.
Teria como otimizar esse código? Alguem poderia por gentileza ajudar o amigo?
package DAO;
import MODELO.Usuario;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DAOUsuario {
Connection conn = null;
PreparedStatement stmt = null;
public void inserir (Usuario usuario) throws SQLException
{
String sql = "insert into usuarios (nome, email, login, senha) values (?,?,?,?)";
try {
//repito esse bloco inteiro
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/CRUD","postgres","");
stmt = conn.prepareStatement(sql);
stmt.setString(1, usuario.getNome());
stmt.setString(2, usuario.getEmail());
stmt.setString(3, usuario.getLogin());
String senha = String.valueOf(usuario.getSenha());
stmt.setString(4, senha);
// até aqui
stmt.execute();
// e o restante até fechar a ultima chave
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
if (conn != null) {
conn.close();
}
}
public void editar (Usuario usuario) throws SQLException
{
String sql = "update usuarios set nome = ?, email = ?, login = ?, senha = ? where codigo = ?";
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/CRUD","postgres","");
stmt = conn.prepareStatement(sql);
stmt.setString(1, usuario.getNome());
stmt.setString(2, usuario.getEmail());
stmt.setString(3, usuario.getLogin());
String senha = String.valueOf(usuario.getSenha());
stmt.setString(4, senha);
stmt.executeUpdate();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
if (conn != null) {
conn.close();
}
}
}
Abraços,
Alessandro.