DAO
DAO(Data Access Object)는 DB 를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.
아래와 같은 User 클래스를 만들어 사용자 정보를 저장할 클래스를 만든다. 해당 클래스는 id, name, password 세 개의 프로퍼티를 가지고 있다.
/* 사용자 정보 저장용 User 클래스 */
public class User {
String id;
String name;
String password;
public String getId(){
return id;
}
public void setId(String id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
}
이제 실제 데이터가 보관될 DB 테이블을 만들어보자. 필자는 오라클을 사용했다.
CREATE TABLE users (
id VARCHAR(10) PRIMARY KEY,
name varchar(20) NOT NULL,
password VARCHAR(20) NOT NULL
);
이제 사용자 정보를 DB에 넣고 관리할 수 있는 DAO 클래스를 만들어보겠다. 클래스의 이름은 UserDao 이며 새로운 사용자를 생성하고, 아이디를 가지고 사용자 정보를 읽어오는 두 개의 메소드를 만든다.
JDBC 를 이용하는 작업 순서는 다음과 같다.
- DB 연결을 위한 Connection 을 가져옴
- SQL 을 담은 Statement 또는 PreparedStatement 를 만든다.
- 만들어진 Statement 를 실행한다.
- 조회할 경우 SQL 쿼리의 실행 결과를 ResultSet 으로 받아서 정보를 저장할 Object 에 옮겨준다.
- 작업 중에 생성된 Connection, Statement, ResultSet 같은 리소스는 작업을 마친 후 반드시 닫아준다.
/* JDBC 를 이용한 등록과 조회 기능이 있는 UserDao 클래스 */
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc::oracle:thin:@localhost:1521:orcl", "아이디", "비번");
PreparedStatement ps = connection.prepareStatement(
"INSERT INTO users(id, name, password) values(?, ?, ?)");
ps.setString(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.executeQuery();
ps.close();
connection.close();
}
public User get(String id) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc::oracle:thin:@localhost:1521:orcl", "아이디", "비번");
PreparedStatement ps = connection.prepareStatement(
"SELECT * FROM users WHERE id = ?"
);
ps.setString(1, id);
ResultSet resultSet = ps.executeQuery();
resultSet.next();
User user = new User();
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));
user.setPassword(resultSet.getString("password"));
resultSet.close();
ps.close();
connection.close();
return user;
}
}
다음 장에서는 UserDao 클래스를 이용해 DB 에 연결해 데이터를 넣고 조회할 수 있는 테스트 코드를 작성하도록 해보겠다.
반응형