본문 바로가기

Spring이론

DAO생성해서 간단한 CRUD 구현하기

반응형

사용자 정보를 JDBC API를 통해 DB에 저장하고 조회할 수 있는 간단한 DAO를 만들어  CRUD를 구현하는 방법을 이야기해보겠습니다.

 

먼저 사용자 정보를 저장할 User class를 만듭니다. 

해당 class에는 id, name이라는 프로퍼티를 가집니다.

public class User{
    String id;
    String name;

    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;
    }
}
 

여기서 id의 경우 DB의 Primary Key로 설정합니다.

 

getter method의 경우 지정된 값을 그냥 반환하고 setter method의 경우 설정된 값을 반환한다고 생각하면 이해가 쉬울 수 있습니다.

 

*프로퍼티(property)란 자바빈이 노출하는 이름을 가진 속성을 말하며 getter와 setter를 통해 수정 혹은 조회할 수 있습니다.

 

 

 

 

이제부터는 사용자 정보를 DB에 넣고 관리할 수 있게 UserDao라는 이름으로 DAO class를 생성해보겠습니다.

public class UserDao{
    public void add(User user) throws ClassNotFoundException, SQLException{
        Class.format("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection(
                "jdbc:mysql://localhost/springbook","spring","book");

        PreparedStatement ps = c.prepareStatement(
                "insert into users(id, name) values(?,?)");
        ps.setString(1, user.getId());
        ps.setString(2, user.getName());
        
        ps.executeUpdate();
        
        ps.close();
        c.close();
    }
    
    public User get(String id) throws ClassNotFoundException, SQLException{
        Class.format("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection(
                "jdbc:mysql://localhost/springbook","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"));
        
        rs.close();
        ps.close();
        c.close();
        
        return user;
    }
}

add method의 경우 CRUD중 Create의 영역이고 

getter를 통해 반환된 값에 setString을 써서 값을 저장한다고 보면 됩니다.

 

get method의 경우 DB에서 Primary Key로 지정한 id를 통해 CRUD중 Read를 구현합니다.

getString을 통해 DB의 해당하는 부분의 문자열을 읽어오고 setter를 통해 설정된 값을 저장하여 불러옵니다. 

 

 

이제 결과를 확인해 볼 차례인데 결과를 확인 할 방법은 DAO의 기능을 사용하는 web application을 만들어 서버에 배치하고, web browser를 통해 DAO의 기능을 사용하는 것이나, 단지 확인하기 위한 작업으로는 너무 부담스럽습니다.

 

따라서 결과를 확인할 가장 간단한 방법은 object 스스로 자신을 검증하도록 만들기 위해 자신을 엔트리 포인트로 설정해 직접 실행이 가능하게 해주는 static method main()을 사용하여 검증합니다.

 

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    UserDao dao = new UserDao();
    
    User user = new User();
    user.setId("pinlib");
    user.setName("핀립");

    dao.add(user);

    System.out.printIn(user.getId() + "등록 성공");
    
    User user2 = dao.get(user.getId());
    System.out.printIn(user2.getName());
    System.out.printIn(user2.getId() + "조회 성공");
}

main method를 만든 후에  UserDao의 object를 생성해서 add()와 get() method를 검증합니다.

 

먼저 User object를 생성하고 property에 값을 넣은 다음에 add() method를 이용해 DB에 등록합니다.

 

 

 

*해당 내용은 '토비의 스프링' 을 참조하여 작성하였습니다.

반응형