티스토리 뷰
스프링을 사용하는 이유에 대해서 순차적으로 알아보기.
mysql mysql-connector-java 5.1.38
Mysql 로 테이블 생성하기 (오라클도 상관 x)
create table book( book_num number, title varchar2(50), publisher varchar2(50), price number, writer varchar2(50) );
BookDao 작성
package test01_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import vo.BookVO; public class BookDao { public int insertBook(BookVO book) { Connection con = null; PreparedStatement pstmt = null; int result = 0; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/사용할테이터베이스", "사용자", "비밀번호"); String sql = "insert into book" + "(title,price,publisher,writer)" + " values(?,?,?,?)"; pstmt = con.prepareStatement(sql); pstmt.setString(1, book.getTitle()); pstmt.setInt(2, book.getPirce()); pstmt.setString(3, book.getPublisher()); pstmt.setString(4, book.getWriter()); result = pstmt.executeUpdate(); } catch (ClassNotFoundException e) { System.out.println("드라이버 로딩 오류"); e.printStackTrace(); } catch (SQLException e) { System.out.println("Mysql IP주소, 아이디, 비밀번호 확인"); e.printStackTrace(); } finally { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { System.out.println("pstmt 반납 실패"); e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { System.out.println("con 반납 실패"); e.printStackTrace(); } } } // finally 끝 return result; }// insert Book 끝 public List
selectAll() { Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; List bookList = new ArrayList<>(); try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/사용할테이터베이스", "사용자", "비밀번호"); String sql = "select book_num,title,price,publisher,writer from book"; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { BookVO book = new BookVO(); book.setBookNum(rs.getInt(1)); book.setTitle(rs.getString(2)); book.setPirce(rs.getInt(3)); book.setPublisher(rs.getString(4)); book.setWriter(rs.getString(5)); bookList.add(book); } } catch (ClassNotFoundException e) { System.out.println("드라이버 로딩 오류"); e.printStackTrace(); } catch (SQLException e) { System.out.println("Mysql IP주소, 아이디, 비밀번호 확인"); e.printStackTrace(); } finally { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { System.out.println("selectAll 반납 오류"); e.printStackTrace(); } } // if 끝 if (con != null) { try { con.close(); } catch (SQLException e) { System.out.println("selectAll 반납 오류"); e.printStackTrace(); } } if (rs != null) { try { rs.close(); } catch (SQLException e) { System.out.println("selectAll 반납 오류"); e.printStackTrace(); } } } return bookList; } }// class 끝
간단한 Test 클래스 작성
package test01_jdbc; import vo.BookVO; public class Test { public static void main(String[] args) { BookDao dao = new BookDao(); //테이블 삽입하기. (이부분 주석 풀고 테이블 들어가는지 확인하기 ) // BookVO book = new BookVO("테이블 들어가나","확인해봐요",25000,"확인"); // int result = dao.insertBook(book); // System.out.println("insert result:"+result); //전체 테이블 확인하기 . for(BookVO b : dao.selectAll()) { System.out.println(b); } } }
BookVO (BookDTO, BookBean 편한대로 명칭쓰자.. Getter Setter 니까..)
package vo; public class BookVO { private int bookNum; private String title; private String writer; private int pirce; private String publisher; public BookVO() { } public BookVO( String title, String writer, int pirce, String publisher) { this.title = title; this.writer = writer; this.pirce = pirce; this.publisher = publisher; } public BookVO(int bookNum, String title, String writer, int pirce, String publisher) { super(); this.bookNum = bookNum; this.title = title; this.writer = writer; this.pirce = pirce; this.publisher = publisher; } public int getBookNum() { return bookNum; } public void setBookNum(int bookNum) { this.bookNum = bookNum; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getWriter() { return writer; } public void setWriter(String writer) { this.writer = writer; } public int getPirce() { return pirce; } public void setPirce(int pirce) { this.pirce = pirce; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } @Override public String toString() { return "BookVo [bookNum=" + bookNum + ", title=" + title + ", writer=" + writer + ", pirce=" + pirce + ", publisher=" + publisher + "] \n"; } }
여기서 문제점은?
위에 언급했듯이 매번 우리는 커넥션을 해줘야 하고, 자원들을 관리해줘야 하며, 개발자가 SQL문까지 신경써야 하는 일이 생겼다.
물론 중복 코드는 따로 클래스를 만들어 관리해줄 수는 있지만, 여전히 모든 부분에 신경써야 함은 변함이 없다.
이를 스프링에서 객체관리를 통해 조금 더 편하게 관리 할 수 있는 버전으로 만들어 보도록 하겠다.
'Web > SPRING' 카테고리의 다른 글
이클립스(Eclipse)로 스프링 개발환경 구축 & STS 다운받기 (0) | 2020.07.29 |
---|---|
스프링 개발 환경 구축 (0) | 2017.11.09 |
스프링 특징 정리 (0) | 2017.11.09 |
Spring 에서 메이븐(Maven) 이 오라클(Oracle) ojdbc를 못가져 올 때 pom.xml 설정하기 (0) | 2017.11.08 |