본문 바로가기
3. 웹개발/3_1_2 스프링

DAO 분리와 확장(1/4) - 첫번째. 마구잡이 DAO 생성

by 갓대희 2016. 2. 1.
반응형

DAO 분리와 확장 (1/3) - 첫번째. 마구잡이 DAO 생성

DAO(Data Access Object)는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.

1. User 클래스 생성
 - 사용자 정보 저장 시 자바빈 규약을 따르는 오브젝트를 이용하면 편리하다. 사용자 정보를 저장할 User 클래스를 만든다.

public class User {
     String id;
     String name;
     String password;

     public String getld() (
          return id;
     }
     public void setld(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;
     }
}

2. DAO 클래스 생성
 - 사용자 정보를 DB에 넣고 관리할 수 있는 DAO 클래스를 생성 한다.

public class UserDao {

public void add(User user) throws ClassNotFoundException, 5QLException {
--ex) Class.forName( "com.mysql.jdbc.Driver");
--ex) Class.forName( "oracle.jdbc.driver.OracleDriver");

Connection c = DriverManager.getConnection(
      --ex) “jdbc :mysql: //localhost/springbook" , "spring" , "book");
      --ex) "jdbc:oracle:thin:@100.000.000.000:1521:HSHOP", "id", "pass");

PreparedStatement ps = c.prepareStatement(
     "insert into users(id , name, password) values(?, ?, ?)");
     ps.set5tring(1 , user.getld());
     ps.set5tring(2 , user.getName());
     ps.set5tring(3 , user.getPassword());

     ps.executeUpdate();

     ps .close();
     c.close();
}

public User get(String id) throws ClassNotFoundException, SQLException {

--ex) Class.forName( "com.mysql.jdbc.Driver");
--ex) Class.forName( "oracle.jdbc.driver.OracleDriver");

Connection c = DriverManager.getConnection(
      --ex) “jdbc :mysql: //localhost/springbook" , "spring" , "book");
      --ex) "jdbc:oracle:thin:@100.000.000.000:1521:HSHOP", "id", "pass");

PreparedStatement ps = c.prepareStatement(
     "select * from users where id = ?");
     ps.setString(1 , id);
     ResultSet rs = ps .executeQuery ();
     rs .next();
     User user = new User();
     user.setld(rs .getString("id"));
     user.setName(rs .getString("name"));
     user.setPassword(rs.getString(password"));
     rs . close ();
     ps . close();
     c. close();
     return user;
}
}

3. main()을 이용한 DAO 테스트
 - 만들어진 코드의 기능을 검증하고자 할 때 가장 간단한 방법중 한가지는 main() 메소드이다.
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( 깨arried');

     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() + " 조회 성공");
}


 - 이 코드에 무슨 문제가 많은 것인가?
 - 잘 동작하는 코드를 굳이 수정하고 개선해야 하는 이유는 뭘까?
 - 개선 후 장점?
 - 객체지향 설계의 원칙과 무슨 상관이 있을까?

스프링은 앞으로 공부하면서 이런 고민을 끈임없이 확인하고 좋은 결론을 내릴 수 있도록 객체지향 기술과 자바 개발의 선구자들이 고민하고 제안한 방법에 대한 힌트를 제공해 준다.

반응형

댓글0