티스토리 뷰

이제 뭘해야하지?

지난 글에서 BoardWriteCommand 를 구현했고 그걸 통해서 사용자가 입력한 데이터를 BoardDto에 담는것까지는 성공했다.

그럼 이제 DTO를 전달받아 실제 DB에 쿼리를 수행할 DAO 메서드를 구현할 차례다

 

어떻게 구현해야할까?

BoardDao 클래스에 insertBoard 메서드를 추가할것이다

정보를 DB에 넣어주니 insert가 맞는거 같아 insertBoard라고 작명했다

 

//게시글 등록을 위한 메서드
  public void insertBoard(BoardDto dto) {
    Connection conn = null;
    PreparedStatement pstmt = null;

    //실행할 쿼리문 - 데이터가 들어갈 자리는 ?로 비워둔다
    String sql = "INSERT INTO board (category, title, content, writer, password) " +
        "VALUES (?, ?, ?, ?, ?)";

    try {
      //공용 연결 메서드 호출
      conn = ConnectionTest.getConnection();

      //쿼리문을 실행할 객체 생성
      pstmt = conn.prepareStatement(sql);

      //쿼리문 ?에 순서에 맞게 값 세팅
      pstmt.setString(1, dto.getCategory());
      pstmt.setString(2, dto.getTitle());
      pstmt.setString(3, dto.getContent());
      pstmt.setString(4, dto.getWriter());
      pstmt.setString(5, dto.getPassword());

      //쿼리문 실행
      int result = pstmt.executeUpdate();

      //쿼리문 실행 결과
      if (result > 0) {
        System.out.println("게시글 등록 성공");
      }

      //예외처리
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      
      //연결 끊기 
      try {
        if (pstmt != null) {
          pstmt.close();
        }

        if (conn != null) {
          conn.close();
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

 

괜히 '인텔리'제이가 아니다 굉장히 똑똑한 친구다

이번에도 도움을 받았다.

 

PreparedStatement pstmt = null;가 뭔고하니

DB에 쿼리문을 배달해주는 도구다

Connection으로 뚫어 놓은 길을 통해  PreparedStatement가 쿼리문과 데이터를 포장해서 날려 보낸다

 

executeUpdate() 이건 뭐야?

JDBC 라이브러리의 기능이다 세팅 끝났으니 실행하라는 버튼인 셈이다

이 메서드를 호출하는 순간 자바가 DB 서버에 데이터를 밀어 넣는 것이다

 

finally와 close는 왜 쓰는거지?

코드가 성공했거나 실패했거나 상관없이 마지막에 실행되는 구역이 finally이다

DB연결과 쿼리 실행객체를 닫아주지 않으면 메모리 누수가 발생하다가 서버가 터져버릴것이다

 

if (pstmt != null) 이 조건은 왜 붙음?

실행 객체를 꺼내기도전에 에러가 발생해 텅빈 null일때는 무막정 닫으라고 명령하면 '아무것도 없는데 어떻게 닫음 ㅋㅋ' 라는 또 다른 에러가 발생하기 때문에, 객체가 존재할때만 안전하게 닫으라는 뜻이다

 

 

BoardDao에 진짜 데이터를 꽂아 넣는 방법을 가르쳐줬으니, 이전 글에서 미완성으로 남겨둔 주문서 작성을 마저 완성 해보자

    //앞선 코드들 생략

    //DAO를 호출해서 DB에 저장할 비즈니스 로직 수행
    BoardDao dao = BoardDao.getInstance();
    dao.insertBoard(dto);

 

이걸 작성함으로써

사용자가 화면에 입력한 데이터가 Command의 손을 거쳐 DTO에 담기고, 최종적으로 DAO의 insertBoard 메서드까지 흘러가는

파이프라인이 구축되었다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/08   »
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 29
30 31
글 보관함