Row Set
tbJDBC 제공하는 Row Set 기능을 설명합니다.
Row Set이란 문자 그대로 로우 데이터의 집합을 포함하는 객체입니다. javax.sql.RowSet 인터페이스 메소드를 통해 접근할 수 있습니다.
일반적으로 Row Set은 아래와 같이 세 가지로 나뉩니다.
Cached Row Set (tbJDBC에서는 현재 이 Row Set만 제공)
JDBC Row Set
Web Row Set
Row Set Listener
Row Set에서는 여러 개의 리스너를 등록하여 사용할 수 있습니다. 등록할 때는 addRowSetListener() 메소드를 사용하고, 제거할 때는 removeRowSetListener() 메소드를 사용합니다. 이때 사용되는 리스너는 반드시 javax.sql.RowSetListener 인터페이스를 통해서 구현되어야 합니다.
RowSetListener 인터페이스에서 제공하는 이벤트
cursorMoved
next()나 previous() 등의 메소드를 통해 열의 이동이 있을 때마다 발생
rowChanged
새로운 열이 추가되거나 기존의 열이 수정되거나 삭제될 때 발생
rowSetChanged
전체 Row Set이 생성되거나 변경될 때 발생
RowSetListener 인터페이스의 이벤트를 사용하는 방법은 아래 예와 같습니다.
리스너 클래스를 생성합니다.
public class MyListener implements RowSetListener
{
public void cursorMoved(RowSetEvent event) {
// do work
}
public void rowChanged(RowSetEvent event) {
// do work
}
public void rowSetChanged(RowSetEvent event) {
// do work
}
}
리스너를 RowSet 객체에 등록합니다.
MyListener mListener = new MyListener();
rowset.addRowSetListener(mListener);
Cached Row Set
Cached Row Set은 모든 열을 캐시에 저장하고, 데이터베이스와의 연결을 유지하지 않도록 구현된 Row Set의 한 형태입니다. tbJDBC에서는 TbCachedRowSet 클래스로 제공됩니다.
RowSet 객체 생성
RowSet 객체는 execute() 메소드를 통해 사용할 수 있는 준비를 마치며, 그 이후에는 java.sql.ResultSet 객체를 사용하는 방법과 동일하게 사용할 수 있습니다.
본 절에서는 RowSet 객체를 생성하는 과정을 두 가지로 나누어 설명합니다.
질의문을 이용한 RowSet 객체 생성
아래의 예는 질의문을 이용하여 RowSet 객체를 생성하는 과정입니다.
TbCachedRowSet 객체를 생성합니다.
TbCachedRowSet rowset = new TbCachedRowSet();
URL, 사용자 이름, 패스워드, 질의문을 설정한 후에 execute() 메소드를 수행하여 RowSet 객체를 생성합니다.
rowset.setUrl("jdbc:tibero:thin:@localhost:8629:dbsvr");
rowset.setUsername("tibero");
rowset.setPassword("tmax");
rowset.setCommand("SELECT * FROM emp");
rowset.execute();
결과 집합을 이용한RowSet 객체 생성
아래의 예는 기존에 존재하는 결과 집합을 이용하여 RowSet 객체를 생성하는 과정입니다.
TbCachedRowSet 객체를 생성합니다.
TbCachedRowSet rowset = new TbCachedRowSet();
결과 집합 객체(rset)를 이용하여 populate() 메소드를 수행하여 RowSet 객체를 생성합니다.
ResultSet rset = pstmt.executeQuery();
rowset.populate(rset);
열 데이터 탐색
RowSet 객체를 이용하여 정방향이나 역방향으로 이동하면서 열의 데이터를 탐색할 수 있습니다.
예를 들면 아래와 같습니다.
rowset.beforeFirst();
while (rowset.next()) {
System.out.println(rowset.getString(1));
}
rowset.afterLast();
while (rowset.previous()) {
System.out.println(rowset.getString(1));
}
또한 열의 데이터를 삽입, 삭제, 수정할 수도 있습니다. 단, acceptChanges() 메소드를 수행해야 커밋이 실행됩니다.
예를 들면 아래와 같습니다.
rowset.absolute(5);
rowset.moveToInsertRow();
rowset.updateString(1, "tibero");
rowset.insertRow();
rowset.acceptChanges();
제약 사항
Updatable 결과 집합에 적용되는 제약 사항과 동일하게 적용됩니다.
Last updated