Boa Tarde a todos,
Como eu disse, no assunto do tópico, estou com pequenos problemas para entender alguns padrões desse maravilhoso livro, mais especificamente o padrão: Row Data Gateway(Portao linha dados), eu entendo que a intenção do padrão é isolar toda a parte de
sql em uma classe, e que essa classe corresponde a um registro do banco, mas, o código que ele demonstra no livro ta meio "esquisito " ou eu to dando algum nó cego(oque é bem mais provável):
segue o código:
Primeiramente essa classe com alguns setters and getters.
public class PersonGateway {
private String lastName;
private String firstName;
private int numberOfDependents;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public int getNumberOfDependents() {
return numberOfDependents;
}
public void setNumberOfDependents(int numberOfDependents) {
this.numberOfDependents = numberOfDependents;
}
depois nessa mesma classe ele adiciona dois métodos:
private static final String updateStatementString =
"UPDATE people "+
" set lastname = ?, firstname = ?,number_of_dependents = ? " +
" where id = ?";
public void update(){
PreparedStatement updateStatement = null;
try{
updateStatement = DB.prepare(updateStatementString);
updateStatement.setString(1, "lastName");
updateStatement.setString(2, "firstName");
updateStatement.setInt(3, numberOfDependents);
updateStatement.setInt(4, getID.intValue());
updateStatement.execute();
}catch(Exception e){
throw new ApplicationException(e.getMessage());
}finally{
DB.cleanUp(updateStatement);
}
}
private static final String insertStatementString =
"insert into people VALUES (?,?,?,?)";
public Long insert(){
PreparedStatement insertStatement = null;
try{
insertStatement = DB.prepare(insertStatement);
setID(findNextDatbaseId());
insertStatement.setInt(1,getID.intValue());
insertStatement.setString(2,lastName);
insertStatement.setString(3,firstName);
insertStatement.setInt(4, numberOfDependents);
insertStatement.execute();
Registry.addPerson(this);
return getID();
}catch (SQLException e){
throw new ApplicationException(e);
}finally {
DB.cleanUp(insertStatement);
}
}
bem, minhas duvidas:
O lançamento de uma nova exceção, de acordo com a descrição no NetBeans, é composta por dois parametros no construtor(String, inputStream).
Sera que alguem pode me explicar o que eu to fazendo errado ?