모듈화와 세분화를 하기 위한 모듈화 객체를 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;
}
}
- public class BookServletDTO
- 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);
}
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
#오류 사항#
- 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 |