와니_ 2019. 5. 31. 19:16

Statement.executeUpdate(DML) >> int 반환

 

Statement.executeQuery(DQL) >> ResultSet 반환 >> 명령을 전달하여 실행시키는 메소드

- ResultSet : 검색행을 저장하기 위한 인스턴스 정보
- SELECT 명령은 Statement.executeQuery() 메소드로 전달하여 실행
               => 검색결과를 ResultSet 인스턴스에 저장하여 반환
- ResultSet 인스턴스에 저장된 검색결과는 행(Row) 단위로 처리하기 위한 커서(Cursor)를 사용
               => 최초 커서의 위치는 BOF(Before Of File) 영역에 있음
- ResultSet.next() : 커서를 아래로 이동하는 메소드 - 커서 위치의 행 처리
               => boolean 반환 : false(커서위치에 처리행이 없는 경우=커서가 EOF 영역에 위치한 경우),
                                         true(커서위치에 행이 존재할 때)

 

< ResultSet >

- ResultSet.getXXX(int columnIndex 또는 String columnName) 
     => 커서가 위치한 처리행에서 원하는 컬럼값을 반환하는 메소드
     => XXX에는 컬럼값을 반환받기 위한 Java 자료형이 들어감
     => columnIndesx : 검색대상의 위치값(1부터 1씩 증가되는 값 사용)
     => getXXX() : 커서의 위치에 있는 컬럼값을 반환하는 메소드
     => 모든 컬럼값은 문자열(String)로 반환받아 저장 가능 
     => 따라서 컬럼의 자료형이 명확하지 않으면 일단 String으로 받아오면 됨!(필요하면 나중에 형변환) 
     => 컬럼값은 하나하나씩 뽑아내야 한다 ==> '패치'라고 부름

- ** next() : 커서가 BOF(Begin Of File)에서 시작해 EOF(End Of File)에 닿을 때까지 이동하며 커서 위치에 행이 존재하는지 판단하여, boolean값을 반환하는 메소드

 

Connection.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability)
   : Statement 인스턴스를 생성하여 반환하는 메소드
   => SELECT 명령을 전달하여 반환되는 ResultSet 인스턴스의 속성변경


- ResultSetType : ResultSet 인스턴스의 커서이동 관련 속성변경
- ResultSet.TYPE_FORWARD_ONLY : 커서를 아래행으로만 이동(기본)
- ResultSet.TYPE_SCROLL_INSENSITIVE : 커서를 원하는 행으로 이동 - 조작행 미반영
- ResultSet.TYPE_SCROLL_SENSITIVE : 커서를 원하는 행으로 이동 - 조작행 반영
- ResultSet.TYPE_CONCUR_READ_ONLY : 처리행의 조작 불가능 
- ResultSet.TYPE_CONCUR_UPDATABLE : 처리행의 조작 가능

Result.first() : 커서를 첫번째 행으로 이동하는 메소드
Result.last() : 커서를 첫번째 행으로 이동하는 메소드
ResultSet.absolute(int rowIndex) : 전달받은 행위치로 커서를 이동하는 메소드
ResultSet.previous() : 커서를 이전행으로 이동하는 메소드
ResultSet.beforeFirst() : 커서를 BOF영역 이동하는 메소드
ResultSet.moveToInsertRow() : 커서 위치에 새로운 행을 생성하는 메소드
                                             => 기존 행들은 자동으로 뒤로 이동
Result.updateXXX(String columnName, Object value) : 커서위치 처리행의 컬럼값을 변경하는 메소드
- ResultSet.InsertRow() : 커서 위치에 새로운 행을 삽입하는 메소드(insert와 같은 효과)

 

< ResultSetMetaData >

- MetaData : 사진이 데이터라고 한다면, 메타데이터는 사진이 찍힌 날짜, 장소, 크기 등의
                 부가적인 데이터 or 보조적인 데이터를 뜻한다.
- ResultSetMetaData 인스턴스 : ResultSet 인스턴스에 저장된 검색결과에 대한 부가적인 정보를 저장하는 인스턴스

ResultSet.getMetaData() : 검색결과에 대한 부가적인 정보를 저장한 ResultSetMetaData 인스턴스를 반환하는 메소드
- ResultSetMetaData.getColumnCount() : 검색결과의 컬럼갯수를 반환하는 메소드
- ResultSetMetaData.getColumnLabel(int columnIndex) : columnIndex 위치의 컬럼명을 반환하는 메소드
ResultSetMetaData.isNullable(int columnIndex) : columnIndex 위치의 컬럼에 대한 NULL 허용 유무값(0 또는 1)을 반환하는 메소드
- ResultSetMetaData.getColumnTypeName(int columnIndex) : columnIndex 위치의 컬럼 자료형을 반환하는 메소드
ResultSetMetaData.getColumnDisplaySize(int columnIndex) : columnIndex 위치의 컬럼에 대한 출력크기를 반환하는 메소드
- ResultSetMetaData.getColumnClassName(int columnIndex) : columnIndex 위치의 컬럼에 대한 Java 자료형(클래스)을 반환하는 메소드

< ConnectionFactory >

: Connection 인스턴스를 생성하여 반환하는 기능 및 제거 기능을 제공하기 위한 클래스
   => JDBC 프로그램 작성에 필요한 명령들을 메소드로 제공
   => 프로그램의 생산성 향상 및 유지보수의 효율성 증가 --- 정석이 아니라 편법
   => "핵심관심코드"라고 하는, 추상화 규칙을 위반한 방법을 사용하므로 권장할 만한 방법은 아니다.