본문 바로가기

JAVA

DAO, DTO

모듈화와 세분화를 하기 위한 모듈화 객체를 DAO, DTO 라고 한다.

  • DAO - Data Access Object
    • 데이터베이스를 조회 하기 위한 로직을 빼논 객체
      • 예제 로직
      • public class BookServletDAO
        {
        String server ="jdbc:mariadb://localhost:포트번호/데이터베이스명";
        String user_name = "";
        String password = "";
        String driver = "org.mariadb.jdbc.Driver";

        // driver가 제대로 잡혀있는지 위한 점검 객체
        public BookServletDAO()
        {
        try {
        Class.forName(driver);
        }catch (Exception e){
        e.printStackTrace();
        }

        }
        //BookServletDTO 클래스를 배열 형식으로 전달받는다.
        public ArrayList<BookServletDTO> select()
        {
        //ArrayList list 객체 생성 BookServletDTO 데이터를 배열로 저장함.
        ArrayList<BookServletDTO> list = new ArrayList<BookServletDTO>();

        //쿼리 조회시 필요한 함수
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {

        con = DriverManager.getConnection(server, user_name, password);
        String sql = "select * from book";
        pstmt = con.prepareStatement(sql);
        rs = pstmt.executeQuery();

        while (rs.next())
        {
        int book_id = rs.getInt("book_id");
        String book_name = rs.getString("book_name");
        String book_loc = rs.getString("book_loc");
        //BookServletDTO 객체에 쿼리 데이터를 인자로 전달
        BookServletDTO BookDTO = new BookServletDTO(book_id, book_loc, book_name);
        //ArrayList<BookServletDTO> 배열에 add를 사용하여 저장한다.
        list.add(BookDTO);
        }
        }catch (SQLException e)
        {
        e.getMessage();
        }
        // null이 아닐시 모든 데이터 연결 종료
        finally {
        try {
        if(con != null)
        {
        con.close();
        }
        if(pstmt != null)
        {
        pstmt.close();
        }
        if(rs != null)
        {
        rs.close();
        }
        }catch (Exception e)
        {
        e.printStackTrace();
        }
        }

        return list;
        }
        }
  • DTO - Data Transfer Object
    • DAO 에서 조회한 데이터베이스 쿼리 데이터를 저장 해 모아두는 객체
    • 예제 로직
      • public class BookServletDTO
        {
        //DAO 에서 받아올 데이터 베이스 함수
        int book_id;
        String book_name;
        String book_loc;

        //DTO 클래스 생성 후 파라미터로 각 변수를 전달 받는다.
        public BookServletDTO(int book_id, String book_name, String book_loc)
        {
        //BookServletDTO에서 사용 할 변수를 지역 변수로 초기화
        this.book_id = book_id;
        this.book_name = book_name;
        this.book_loc = book_loc;
        }
        //Getter 생성 insert 또는 update가 필요시 setter 지정
        public int getBook_id()
        {
        return book_id;
        }
        public String getBook_name()
        {
        return book_name;
        }
        public String getBook_loc()
        {
        return book_loc;
        }

        }
    • DAO, DTO 구성 후 Servlet 파일
      • protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();

        //Servlet 구동을 위한 BookServvletDAO 클래스 객체 생성
        BookServletDAO bookDAO = new BookServletDAO();

        //저장되어 있는 값을 사용 하기 위해 ArrayList list 객체 생성 후 bookDAO내 select 메서드 선언
        ArrayList<BookServletDTO> list = bookDAO.select();
        //list 배열 크기 만큼 for문 진행 foreach 진행 해도 될듯함.

        for(int i = 0; i<list.size(); i++)
        {
        BookServletDTO dto = list.get(i);
        int book_id = dto.getBook_id();
        String book_name = dto.getBook_name();
        String book_loc = dto.getBook_loc();

        out.println("book_id = " + book_id);
        out.println("book_name = " + book_name);
        out.println("book_loc = " + book_loc);
        }


        }

        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
        }

 

 

 

 

#오류 사항#

  • maria db connector 오류 사항
    • 일반적인 servlet 일경우 Library -> mariadb_connector_jar 파일을 종속 시켜 주면 되지만 maven 일 경우 pom.xml내 dependency를 추가 시켜줘야 함.
  • NullpointException 오류 사항
    • 쿼리를 날려주는 createStatement() 메서드를 호출을 안한채로 쿼리를 날리고 있었음.

 

 

 

 

'JAVA' 카테고리의 다른 글

서블릿의 생명주기 메서드  (0) 2021.07.21
Servlet 특징 정리  (0) 2021.07.21
JSP - JDBC  (0) 2021.07.13
JSP - 한글 처리  (0) 2021.07.05
Session  (0) 2021.07.01