ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1.1 초난감 DAO
    책/토비의 스프링 2024. 7. 7. 13:55

    책을 읽고 흘려버리기 보단, 꼭꼭 씹어먹기 위해 정리해봅니다.

    이 포스팅은 이일민님의 <토비의 스프링3>에 기반하고 있습니다.


     

    1. 클래스 구성

    1. User.java

    자바빈 규약을 따르는 클래스

    더보기
    public class User {
      private String id;
      private String name;
      private 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;
      }
    }
    

     

    자바 빈 규약
    - 재사용 가능한 소프트웨어 컴포넌트를 작성하기 위한 규약
    - sun사에서 만들어서 현재는 오라클에서 관리
    - 다양한 자바 기반 애플리케이션에 같이 사용할 수 있도록 프로토콜화

    1. 기본 생성자를 갖는다. public , no-arg
    2. 모든 필드는 private으로 선언된다.
    3. 모든 필드에 대해 getter와 setter를 갖는다.
      - get필드명, set필드명 과 같은 규칙으로 짓는다
      - boolean 타입의 경우 is필드명을 사용할 수 있다
    4. 직렬화가 가능해야한다. implements Serializable

     

    2. UserDao.java

    유저를 데이터베이스에 삽입 조회 하는 클래스

    더보기
    import java.sql.*;
    
    public class UserDao {
      public void add(User user) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/springbook", "root", "12345678");
    
        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 userId) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/springbook", "root", "12345678");
    
        PreparedStatement ps = c.prepareStatement("select * from users where id = ?");
        ps.setString(1, userId);
        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;
      }
    
      public void deleteAll() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/springbook", "root", "12345678");
    
        PreparedStatement ps = c.prepareStatement("delete from users");
        ps.executeUpdate();
    
        ps.close();
        c.close();
      }
    }
    

     

     

    3. UserDaoTest.java

    작성된 UserDao가 정상적으로 동작하는지 확인을 위한 클래스

    더보기
    import java.sql.SQLException;
    
    public class UserDaoTest {
      public static void main(String[] args) throws SQLException, ClassNotFoundException {
        UserDao dao = new UserDao();
        dao.deleteAll();
    
        User user = new User();
        user.setId("a3_n283u2");
        user.setName("han");
        user.setPassword("1234");
    
        dao.add(user);
        System.out.println(user.getId() + " 등록 성공");
    
        User user2 = dao.get(user.getId());
        System.out.println(user2.getId() + " 조회 성공");
        System.out.println(user2.getId() + " 조회 성공");
    
      }
    }

     

     

     


    [출처]

    이일민님의 <토비의 스프링3>

    [이미지 출처]

    https://m.yes24.com/Goods/Detail/4020006

    ' > 토비의 스프링' 카테고리의 다른 글

    1.4.1 오브젝트 팩토리  (0) 2024.07.08
    1.3.3 관계설정 책임의 분리  (0) 2024.07.07
    1.3.1 클래스의 분리  (0) 2024.07.07
    1.2.3 DB 커넥션 만들기의 독립  (0) 2024.07.07
    1.2.2 커넥션 만들기의 추출  (0) 2024.07.07
Designed by Tistory.