728x90
반응형
해당 자료를 통한 2차 창작 시 댓글 달아주세요!
🟰JDBC(Java Database Connecity)
☀️DB와 연결하여 데이터를 주고받을 수 있도록 하는 인터페이스
☀️여러 종류의 DB에 접속하여 SQL문을 수행한 결과를 가져오기 위해 사용
☀️JDBC 드라이버를 통해 연결한다.
☀️DB에서 쿼리문 결과를 가져올때마다 Connection을 해야 하는 단점이 있다.
⏬JDBC활용 코드
☀️class.forName을 통해 해당 드라이버를 로드합니다.
☀️Connector 인터페이스를 통해 드라이버 및 DB에 접속을 수행합니다.
☀️Prestatement 인터페이스로 해당 SQL을 적재합니다.(Prestatement는 Statement의 서브클래스입니다.)
☀️Resultset 인터페이스로 해당 SQL을 수행하고 결과를 담습니다.
☀️rs.next()를 반복문을 통해 rs의 다음 내용이 없을때까지 반복문을 돌려 dto객체에 담아 줍니다.
☀️arraylist에는 dto객체가 데이터에서 가져온 개수만큼 담겨있습니다.
package ex04; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; public class MelonDAO { private Connection conn; private PreparedStatement pstmt; private ResultSet rs; private String url = "jdbc:oracle:thin:@ip주소:포트번호:연결방식"; private String user = "DB아이디"; private String password = "DB비밀번호"; private String driverClassName = "oracle.jdbc.driver.OracleDriver"; public MelonDAO() { try { Class.forName(driverClassName); }catch (Exception e) { System.out.println("연결 잘못됨"); } } public ArrayList<MelonDTO> selectAll() { ArrayList<MelonDTO> list =new ArrayList<MelonDTO>(); String sql = "select * from melon order by ranking asc"; try { conn = DriverManager.getConnection(url,user,password); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()) { MelonDTO dto = new MelonDTO( //rs.메서드("동일한이름") rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5) ); list.add(dto); } }catch (Exception e) { }finally { try { rs.close(); pstmt.close(); conn.close(); }catch (Exception e) { } } return list; } }
🟰Prestatement를 사용하는 이유
☀️SQL인젝션의 공격을 막고자 사용
☀️반복적인 쿼리를 수행할 경우 Statement보다 PreStatement가 캐시를 적게 사용한다.
🟰Statement와 PreStatement의 차이
☀️Statement : SQL문을 실행할 때마다 SQL문장을 분석하고 컴파일해서 실행한다.
☀️PreStatement: 처음 한 번만 분석/컴파일 단계를 거치고 캐시에 담아 재사용한다.
🟰ExecuteQuery와 ExecuteUpdate의 사용유무
☀️ExecuteQuery : 주로 select문을 수행시 사용된다.
☀️ExecuteUpdate : insert, delete, update 구문을 수행시 사용한다.
⭐⭐가장 중요한 close()
☀️close는 가장 나중에 호출한 rs / pstmt / conn 순으로 close해준다.
☀️close하지 않은 경우 해당 Connection은 계속 연결중이게 되고 다른 클라이언트가 접속할 수 없다.
728x90
반응형
'JSP' 카테고리의 다른 글
JSP - Servlet 각 내장객체별 범위(Scope) (136) | 2023.08.18 |
---|---|
JSP - web.xml 의 index파일이 가장 먼저 출력되는 이유(예시 포함) (23) | 2023.08.11 |
JSP - JSP-JSTL ( <C:forEach>, core 태그 사용하기) 예시1 (0) | 2023.08.10 |
JSP-JSTL ( <C:set>, core 태그 사용하기)2 (0) | 2023.08.09 |
JSP-JSTL ( <C:set>, core 태그 사용하기) (0) | 2023.08.08 |