리펙토링 : 결과의 변경 없이 코드의 구조를 다시 조정하는 것
DB connection 코드가 중복되므로, 따로 메소드로 구현한다.
—> 코드 구조 변경 없이 미래의 DB 연결 관련 변경에 유연하게 대처할 수 있음.
※ 이처럼 중복되는 코드를 추출하는 리펙토링을 메소드 추출이라고 한다.
private Connection getConnection() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost/toby-part1","root","1234");
return c;
}
public void add(User user) throws ClassNotFoundException, SQLException{
Connection c = getConnection();
PreparedStatement ps = c.prepareStatement("insert into user(id, Name, Password) values(?,?,?)");
ps.setString(1, user.getId()); // id = user.getId
ps.setString(2, user.getName()); // Name = user.getName
ps.setString(3, user.getPassword()); // Password = user.getPassword
ps.executeUpdate(); // update 완료
ps.close(); // PreparedStatement 닫기
c.close(); // connection 닫기
}
public class UserDao{
//적절한 코드
protected Connection getConnection() throws ClassNotFoundException, SQLException;
}
public class DUserDao extends UserDao{
public Connection getConnection() throws ClassNotFoundException, SQLException{
// 적절한 코드 생성
}
}