본문 바로가기
JDBC

JDBC - 자바와 데이터베이스 연동하기(2)

by 썬키 2022. 1. 2.
  • JDBC란?
  • JDBC 순서
    • Web Project 생성, 라이브러리 추가
    • DB 연결하기
    • VO 클래스 만들기
    • Service 클래스 만들기
    • DAO 클래스 만들기

 

 

 

 

JDBC - 자바와 데이터베이스 연동하기(1)

JDBC란? JDBC 순서 Web Project 생성, 라이브러리 추가 DB 연결하기 VO 클래스 만들기 Service 클래스 만들기 DAO 클래스 만들기 1.JDBC란? JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할..

itsmesunky.tistory.com

지난 게시글에선 새로운 웹 프로젝트에 라이브러리를 추가하고

데이터베이스를 연결하는 과정까지 포스팅하였다.

 

 

 

이번 게시글에선

VO, Service, DAO 클래스를 만드는 과정을 포스팅 해보려고 한다.

 

우선, VO 클래스에 객체를 생성하기 위해서는 DB에 필드값이 존재해야 한다.

이미지1

첨부된 이미지처럼, DB에 테이블이 있어야 하고 샘플 데이터들이 입력되어 있어야 한다.

나는 BOARD라는 테이블의 DB를 자바와 연동하려고 한다.

필드는 총 6개이므로, 이클립스에서 VO 클래스를 만들고 객체를 생성한다.

 

이미지2

src/main/java 밑에 com.sunky.board.vo 라는 패키지를 만들고

그 안에 BoardVO 라는 클래스를 생성했다.

 

package com.sunky.board.vo;
public class BoardVO {
	private long no;
	private String title, content, writer, writeDate;
	private long hit;
}

BoardVO 클래스에 이미지1을 참고해

존재하는 필드값들을 알맞는 타입과 함께 변수로 선언해준다.

 

Generate Getters amd Setters...

 

 

Generate toString()...

 

package com.sunky.board.vo;
public class BoardVO {
	private long no;
	private String title, content, writer, writeDate;
	private long hit;
	public long getNo() {
		return no;
	}
	public void setNo(long no) {
		this.no = no;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getWriteDate() {
		return writeDate;
	}
	public void setWriteDate(String writeDate) {
		this.writeDate = writeDate;
	}
	public long getHit() {
		return hit;
	}
	public void setHit(long hit) {
		this.hit = hit;
	}
	@Override
	public String toString() {
		return "BoardVO [no=" + no + ", title=" + title + ", content=" + content + ", writer=" + writer + ", writeDate="
				+ writeDate + ", hit=" + hit + "]";
	}
}

Getters, Setters, toString 기능을 이용해 클래스를 작성한다.

여기까지가 VO 클래스를 만드는 과정이다.

 

 

다음으로 BoardDAO 패키지 안에 BoardDAO 라는 클래스를 생성한다.

 

이어서, Service 패키지를 만들어 보려고 한다.

Serivce 패키지에는 CRUD에 맞춰, 총 5개의 클래스를 넣는다.

ListService, ViewService, WriteService, UpdateService, DeleteService

 

 

 

1.BoardListService

package com.sunky.board.service;

import java.util.List;

import com.sunky.board.dao.BoardDAO;
import com.sunky.board.vo.BoardVO;

public class BoardListSerivce {
	public List<BoardVO> service() throws Exception{
		BoardDAO dao = new BoardDAO();
		return dao.list();
	}
}

BoardListService 클래스에 이렇게 작성해준다.코드를 살펴보면 return dao.list (:dao(BoardDAO) 클래스에서 list()메서드를 찾아서 리턴해준다.)라고 되어 있는데, 실제로 BoardDAO 클래스에는 list()메서드가 없기 때문에 컴파일 오류가 생긴다.

 

컴파일 오류가 생긴 부분에 클릭을 하게 되면 생기는 해결 방안에서

Create method 'list()' in type 'BoardDAO' 를 클릭한다.

그러면 위의 이미지와 같이 BoardDAO 클래스에

list() 메서드가 자동적으로 생기게 된다.

그 안에 내용들을 같이 채워보자.

 

package com.sunky.board.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.sunky.board.vo.BoardVO;
import com.sunky.util.db.DB;

public class BoardDAO {
	
	Connection con = null;
	PreparedStatement ppsm = null;
	ResultSet rs = null;
	

	public List<BoardVO> list() throws Exception{
		// TODO Auto-generated method stub
		List<BoardVO> list = null;
		
		try {
			//1.2 연결
			con = DB.getConnection();
			//3. SQL 작성
			String sql = "select no, title, writer, writeDate, hit from board order by no desc";
			//4. 실행 객체
			ppsm = con.prepareStatement(sql);
			//5. 실행
			rs = ppsm.executeQuery();
			//6. 표시 또는 닫기
			if(rs!=null) {
				while(rs.next()) {
					//만약, 데이터를 담을 list가 null이면 담을수 없기 때문에 한번은 생성해야 한다.
					if(list==null) list = new ArrayList<BoardVO>();
					//실제적인 데이터를 담을 객체를 생성
					BoardVO vo = new BoardVO();
					//setter를 이용해서 데이터 담기
					vo.setNo(rs.getLong("no"));
					vo.setTitle(rs.getString("title"));
					vo.setWriter(rs.getString("writer"));
					vo.setWriteDate(rs.getString("writeDate"));
					vo.setNo(rs.getLong("hit"));
					
					//vo를 list에 담기
					list.add(vo);
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			try {
				//7.닫기
				DB.close(con, ppsm, rs);
				
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
		return list;
	}

}

 

앞으로 만들게 될 view(), write(), update(), delete() 메서드들도 위와 같이 비슷하게

작성되므로  달아놓은 주석들을 참고해 코드 작성하는데에 도움이 되었으면 한다.

 

코드 작성을 총 7단계로 나눠 보았다.

 

JDBC - 자바와 데이터베이스 연동하기(1) 에서 설명했던

Connection, PrePareStatement, ResultSet을 이용하고 tryㆍcatch 문을 이용,

SQL 작성법을 이용해서 메서드를 완성하면 된다.

 

글이 길어지는 관계로

View, Write, Update, Delete 메서드들도 차차 업데이트 하겠다.

'JDBC' 카테고리의 다른 글

JDBC - 자바와 데이터베이스 연동하기(1)  (0) 2022.01.01

댓글