Eu poderia mover o statement para dentro do método adiciona? Sei que tem muitas coisas explicativas didáticas, porém para um projeto grande (MVC) em pleno funcionamento, o statement deve ficar onde? não é dentro da pasta DAO? E se for dentro do DAO como eu vou fazer o tal do commit e rollback? minha cabeça entrou em colapso kkkk
public class TestaInsercao {
public static void main(String[] args) throws SQLException {
try (Connection connection = Database.getConnection()) {
connection.setAutoCommit(false);
String sql = "insert into produto (nome, descricao) values (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS)) {
adiciona("TV LCD", "32 polegadas", statement);
adiciona("Blueray", "Full HDMI", statement);
connection.commit();
statement.close();
} catch (Exception e) {
connection.rollback();
System.out.println("Rollback efetuado");
e.printStackTrace();
}
}
}
private static void adiciona(String nome, String descricao,
PreparedStatement statement) throws SQLException {
if (nome.equals("Blueray")) {
throw new IllegalArgumentException("Problema ocorrido");
}
statement.setString(1, nome);
statement.setString(2, descricao);
boolean resultado = statement.execute();
System.out.println(resultado);
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
while (generatedKeys.next()) {
long id = generatedKeys.getLong("id");
System.out.println("id gerado: " + id);
}
}
}
}