[토비의 스프링 3.1] 1.1 초난감 DAO - 포포
2022. 5. 23. 14:12ㆍ토비의 스터디
실습은
OS: Window 10
IDE: Intelli J
Java 11, MySQL 8.0.24
로 진행하였다.
1.1.1 User
사용자 정보를 저장할 때는 자바빈 규약(getter,setter 등)을 따르는 오브젝트를 이용하면 편리하다.
User 클래스를 만들고, id, name, password의 프로퍼티를 가진 User 클래스를 생성한다.
이후 User오브젝트에 담긴 정보가 실제로 보관될 DB의 테이블을 하나 생성한다.
테이블 명은 USER이며 프로퍼티는 User클래스와 동일하다.
1.1.2 UserDao
DAO(Data Access Object)는 DB를 사용해 데이터를 조회, 조작하는 기능을 전담하는 오브젝트이다.
사용자 정보를 DB에 넣고 관리하는 UserDao 클래스를 생성한다. 사용자를 생성(add)하고 정보를 읽어오는(get) 메소드를 먼저 만들었다.
public class UserDao {
public void add(User user) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://localhost/springbook", "spring", "book");
PreparedStatement ps = c.prepareStatement(
"insert into usere(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("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://localhost/springbook", "spring", "book");
String sql = "select * from user where id=?";
PreparedStatement ps = c.prepareStatement(sql);
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;
}
}
이후 main 메소드에서 테스트 코드를 작성 후 원하는 결과를 얻을 수 있었다.
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() + " 조회 성공");
하지만 현재 UserDao의 코드에는 문제점이 많다.
다음 1.2장에서는 UserDao를 리팩토링하는 과정을 담고있다.
'토비의 스터디' 카테고리의 다른 글
[토비의 스프링 3.1] 1.5 스프링의 IoC (0) | 2022.05.27 |
---|---|
[토비의 스프링 3.1] 1.4 제어의 역전(IoC) (0) | 2022.05.26 |
[토비의 스프링 3.1] 1.3 DAO의 확장 (0) | 2022.05.25 |
[토비의 스프링 3.1] 1.2 DAO의 분리 - 포포 (0) | 2022.05.24 |
들어가며 (0) | 2022.05.23 |