목차
1.1.1 User
사용자 정보를 JDBC API를 통해 DB에 저장하고 조회할 수 있는 간단한 DAO 만들기
DAO(Data Access Object)
DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트
자바빈 규약을 따르는 오브젝트 User를 생성
자바빈(Java Bean)
다음 두 가지 관례를 따르는 오브젝트를 가리키며, 간단히 빈이라고 부르기도 한다.
- 디폴트 생성자 : 파라미터가 없는 디폴트 생성자
- 프로퍼티 : 수정자 메소드(setter) + 접근자 메소드(getter)
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 테이블은 User 클래스의 프로퍼티와 동일하게 구성한다.
필드명 | 타입 | 설정 |
---|---|---|
id | VARCHAR2(10) | Primary Key |
name | VARCHAR(20) | Not Null |
password | VARCHAR2(20) | Not Null |
CREATE TABLE users (
id VARCHAR2(10) PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
password VARCHAR2(20) NOT NULL
)
1.1.2 UserDao
사용자 정보를 DB에 넣고 관리할 수 있는 DAO 클래스
JDBC를 이용한 작업의 일반적 순서
- DB 연결을 위한 Connection 가져오기
- SQL을 담은 Statement(또는 PreparedStatement) 작성
- Statement 실행
- 조회 : 실행 결과를 ResultSet으로 받아서 오브젝트에 저장
- 작업 후 만들어진 리소스(Connection, Statement, ResultSet) 닫아서 반환
- 예외 처리
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException {
// MySql
// Class.forName("com.mysql.jdbc.Driver");
// Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");
// Oracle
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "spring", "book");
PreparedStatement ps = c.prepareStatement("INSERT INTO users(id, name, password) VALUES (?, ?, ?)");
ps.setString(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.executeUpdate();
ps.close();
c.close();
}
public User get(String id) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "spring", "book");
PreparedStatement ps = c.prepareStatement("SELECT * FROM users WHERE id = ?");
ps.setString(1, id);
ResultSet rs = ps.executeQuery();
rs.next();
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
rs.close();
ps.close();
c.close();
return user;
}
}
1.1.3 main()을 이용한 DAO 테스트 코드
add() 메소드를 이용한 신규 사용자 추가 및 get() 메소드를 통해 가져온 결과 확인
public static void main(String[] args) throws ClassNotFoundException, SQLException{
UserDao dao = new UserDao();
User user = new User();
user.setId("whiteship");
user.setName("백기선");
user.setPassword("married");
dao.add(user);
System.out.println(user.getId() + "등록 성공");
User user2 = dao.get(user.getId());
System.out.println(user2.getName());
System.out.println(user2.getPassword());
System.out.println(user2.getId() + "조회 성공");
}
main()을 UserDao 클래스에 붙이고 테스트를 해보자.
해당 jdbc 라이브러리를 Classpath에 추가해주어야 한다.
whiteship 등록 성공
백기선
married
whiteship 조회 성공
' Spring > 토비의 스프링 3.1' 카테고리의 다른 글
1.6 싱글톤 레지스트리와 오브젝트 스코프 (0) | 2019.01.09 |
---|---|
1.5 스프링의 IoC (0) | 2019.01.07 |
1.4 제어의 역전(IoC) (0) | 2019.01.07 |
1.3 DAO의 확장 (0) | 2019.01.07 |
1.2 DAO의 분리 (0) | 2019.01.03 |