디렉터리 구조

dto/board/Board.java
public class Board {
private int _id;
private String subject;
private String content;
private String writer;
private int hit;
private String wdate;
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
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 int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
public String getWdate() {
return wdate;
}
public void setWdate(String wdate) {
this.wdate = wdate;
}
}
dao/util/JDBCUtil.java
public clas JDBCUtil {
public static Connection getConn() {
String DBFileName = "MyBoard.db";
Connection conn = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + DBFileName);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn, PreparedStatement ps) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ps = null;
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}
public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
rs = null;
}
}
close(conn, ps);
}
}
dao/board/BoardDAOJDBC.java // 코딩 후 BoardDAO라는 interface를 만들것임
public class BoardDAOJDBC implements BoardDAO{
private final String BOARD_INSERT = "INSERT INTO board(subject,content,writer) VALUES(?,?,?);";
private final String BOARD_DELETE = "DELETE FROM board WHERE _id = ?;";
private final String BOARD_UPDATE = "UPDATE board SET subject=?, content = ?,writer =? WHERE _id = ?;";
private final String BOARD_SELECTE_ONE = "SELECT * FROM board WHERE _id = ?;";
private final String BOARD_SELECTE_ALL = "SELECT * FROM board ORDER BY _id DESC;";
public int insert(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
int r = -1;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_INSERT);
ps.setString(1, vo.getSubject());
ps.setString(2, vo.getContent());
ps.setString(3, vo.getWriter());
r = ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return r;
}
public int delete(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_DELETE);
ps.setInt(1, vo.get_id());
int r = ps.executeUpdate();
return r;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return -1;
}
public int update(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_UPDATE);
ps.setString(1, vo.getSubject());
ps.setString(2, vo.getContent());
ps.setString(3, vo.getWriter());
ps.setInt(4, vo.get_id());
int r = ps.executeUpdate();
return r;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return -1;
}
public Board getOne(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Board gvo = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_SELECTE_ONE);
ps.setInt(1, vo.get_id());
rs = ps.executeQuery();
if (rs.next()) {
gvo = new Board();
gvo.set_id(rs.getInt("_id"));
gvo.setSubject(rs.getString("subject"));
gvo.setContent(rs.getString("content"));
gvo.setWriter(rs.getString("writer"));
gvo.setHit(rs.getInt("hit"));
gvo.setWdate(rs.getString("wdate"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return gvo;
}
public List<Board> getAll() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Board> list = new ArrayList<Board>();
try {
conn = JDBCUtil.getConn();
ps = conn.prepareStatement(BOARD_SELECTE_ALL);
rs = ps.executeQuery();
while (rs.next()) {
Board gvo = new Board();
gvo.set_id(rs.getInt("_id"));
gvo.setSubject(rs.getString("subject"));
gvo.setContent(rs.getString("content"));
gvo.setWriter(rs.getString("writer"));
gvo.setHit(rs.getInt("hit"));
gvo.setWdate(rs.getString("wdate"));
list.add(gvo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return list;
}
}
DAOJDBC 클래스를 DAO interface로 만들기

BoardDAOJDBC.java 작업창에 오른족 마우스 – Refactor – Extract Interface
Interface name : BoardDAO
Members to declare in the interface – 전체 선택 – OK
서비스를 위해 메타태그를 달아야 한다
@Repository
클래스 상단에 @Repository
@Override
매서드 상단에 Override
@Repository
public class BoardDAOJDBC implements BoardDAO{
private final String BOARD_INSERT = "INSERT INTO board(subject,content,writer) VALUES(?,?,?);";
private final String BOARD_DELETE = "DELETE FROM board WHERE _id = ?;";
private final String BOARD_UPDATE = "UPDATE board SET subject=?, content = ?,writer =? WHERE _id = ?;";
private final String BOARD_SELECTE_ONE = "SELECT * FROM board WHERE _id = ?;";
private final String BOARD_SELECTE_ALL = "SELECT * FROM board ORDER BY _id DESC;";
@Override
public int insert(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
int r = -1;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_INSERT);
ps.setString(1, vo.getSubject());
ps.setString(2, vo.getContent());
ps.setString(3, vo.getWriter());
r = ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return r;
}
@Override
public int delete(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_DELETE);
ps.setInt(1, vo.get_id());
int r = ps.executeUpdate();
return r;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return -1;
}
@Override
public int update(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_UPDATE);
ps.setString(1, vo.getSubject());
ps.setString(2, vo.getContent());
ps.setString(3, vo.getWriter());
ps.setInt(4, vo.get_id());
int r = ps.executeUpdate();
return r;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return -1;
}
@Override
public Board getOne(Board vo) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Board gvo = null;
conn = JDBCUtil.getConn();
try {
ps = conn.prepareStatement(BOARD_SELECTE_ONE);
ps.setInt(1, vo.get_id());
rs = ps.executeQuery();
if (rs.next()) {
gvo = new Board();
gvo.set_id(rs.getInt("_id"));
gvo.setSubject(rs.getString("subject"));
gvo.setContent(rs.getString("content"));
gvo.setWriter(rs.getString("writer"));
gvo.setHit(rs.getInt("hit"));
gvo.setWdate(rs.getString("wdate"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return gvo;
}
@Override
public List<Board> getAll() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Board> list = new ArrayList<Board>();
try {
conn = JDBCUtil.getConn();
ps = conn.prepareStatement(BOARD_SELECTE_ALL);
rs = ps.executeQuery();
while (rs.next()) {
Board gvo = new Board();
gvo.set_id(rs.getInt("_id"));
gvo.setSubject(rs.getString("subject"));
gvo.setContent(rs.getString("content"));
gvo.setWriter(rs.getString("writer"));
gvo.setHit(rs.getInt("hit"));
gvo.setWdate(rs.getString("wdate"));
list.add(gvo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCUtil.close(conn, ps);
}
return list;
}
}f