티스토리 뷰

이미지 출처 : 인프런 실전 jsp 강의

- DAO DTO란

DAO : Data Access Object 데이터베이스에 직접적으로 접근하는 객체

DTO (VO): Data Transfer Object 데이터베이스 내 데이터를 자바 형태로 변환해주는 객체

 

  • 이전에 서블릿 파일에 복잡하고 길게 구현해둔 데이터베이스 연동 부분을 모듈화 시킴 
  • 따라서 각각 DAO , DTO 패키지 -> 클래스를 만들어준후 그 클래스에서 DAO와 DTO를 구현하면 된다.

 

DAO 객체

  1. 생성자를 통해 객체가 생성되면 바로 데이터베이스 연동이 되도록 한다.
  2. select()메서드에서 BookDTO객체를 통해 ArrayList에 데이터 베이스 내 데이터를 모두 담고, ArrayList 형태로 반환한다. 
package com.servlet.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import com.servlet.dto.BookDTO;

public class BookDAO {

	String driver ="oracle.jdbc.driver.OracleDriver";
	String url ="jdbc:oracle:thin:@localhost:1521:xe";
	String id = "scott";
	String pw = "tiger";
	
	public BookDAO() { //생성자를 통해 객체가 생성되면 바로 데이터베이스 연동 
		try {
			Class.forName(driver);
		}catch(Exception e) {
			
		}
	}
	public ArrayList<BookDTO> select(){
		ArrayList<BookDTO> list = new ArrayList<BookDTO>(); //DTO를 통해 데이터를 arrayList로 받아온다.
		Connection con =null;
		PreparedStatement pstmt=null;
		ResultSet res= null;
		try {
			con=DriverManager.getConnection(url, id, pw);
			String sql= "SELECT * FROM book";
			pstmt = con.prepareStatement(sql);
			res = pstmt.executeQuery();
			while(res.next()) {
				int bookId=res.getInt("book_id");
				String bookName=res.getString("book_name");
				String bookLoc=res.getString("book_log");
				BookDTO bookDTO = new BookDTO(bookId, bookName, bookLoc);
				list.add(bookDTO); //리스트에 객체 추가 
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally { //close 
			try {
				if(res!=null) res.close();
				if(pstmt!=null) pstmt.close();
				if(con!=null) con.close();
			}catch(Exception e2) {
				e2.printStackTrace();
			}
		}
		return list;
	}
}

 

DTO 객체

  1. DTO객체는 데이터베이스 내 데이터를 담고 있는 객체이므로 멤버 변수를 해당 데이터 베이스 내의 데이터들로 선언해준다.
  2. 생성자들을 통해 데이터를 set한다.
  3. get 메서드를 선언하여 외부에서 해당 데이터에 접근할 수 있도록 해준다.
package com.servlet.dto;

public class BookDTO {
	int bookId;
	String bookName;
	String bookLocation;
	public BookDTO(int bookId, String bookName, String bookLocation) {
		this.bookId=bookId;
		this.bookName=bookName;
		this.bookLocation=bookLocation;
	}
	public int getbookId() {
		return bookId;
	}
	public String getbookName() {
		return bookName;
	}
	public String getbookLocation() {
		return bookLocation;
	}

}

 

servlet 파일

 

package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.servlet.dao.BookDAO;
import com.servlet.dto.BookDTO;

@WebServlet(name = "bs", urlPatterns = { "/bs" })
public class BookServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		BookDAO bookDAO = new BookDAO(); //dao 객체 생성->동시에 데이터베이스 연동 
		ArrayList<BookDTO> list = bookDAO.select(); //select를 통해 데이터를 list에 저장 
		for(int i =0 ; i<list.size(); i++) {
			BookDTO dto = list.get(i); 
			int bookId = dto.getbookId();
			String bookName=dto.getbookName();
			String bookLoc = dto.getbookLocation();
			out.print(i+"번째 ");
			out.print("bookID:  "+ bookId +" , ");
			out.print("bookName:  "+ bookName +" , ");
			out.print("bookLoc:  "+ bookLoc +" <br> ");
		}
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		doGet(request, response);
	}
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함