Introduction to RowSet: JDBC’s Answer to Disconnected Data Models
Introduction to RowSet: JDBC’s Answer to Disconnected Data Models
RowSet क्या है?
जब हम JDBC (Java Database Connectivity) का use करते हैं, तो हम generally ResultSet के साथ data fetch करते हैं। लेकिन ResultSet connected होता है — यानी जब तक connection open रहेगा, तब तक ही data access किया जा सकता है। अब सोचो अगर हमें data को temporary store करके बाद में process करना हो, तो क्या हर बार connection open रखना सही रहेगा? बिल्कुल नहीं! इसी समस्या का solution है — RowSet।
RowSet JDBC का एक ऐसा advanced interface है जो disconnected data model को support करता है। यानी आप data को database से fetch करके memory में रख सकते हैं, और बाद में बिना connection के उस data को access, modify या update कर सकते हैं।
Types of RowSet
JDBC में RowSet के कई types होते हैं जो अलग-अलग scenarios में काम आते हैं। चलिए उन्हें detail में समझते हैं।
1. CachedRowSet
यह सबसे commonly used RowSet है। यह data को memory में cache करता है और connection बंद होने के बाद भी data access करने की अनुमति देता है। जब आप offline mode में data modify करते हैं, तो changes बाद में database से sync किए जा सकते हैं।
2. JdbcRowSet
JdbcRowSet basically ResultSet की तरह काम करता है लेकिन इसके साथ extra convenience features होते हैं जैसे event handling और scrollable navigation। यह connected रहता है और real-time updates को support करता है।
3. WebRowSet
यह RowSet XML format में data को store और transfer करता है। इसे web applications में use किया जाता है ताकि data को XML के माध्यम से easily exchange किया जा सके।
4. FilteredRowSet
यह type specific data filtering के लिए use होता है। जैसे अगर आप किसी table में से केवल कुछ records (जैसे salary > 50000 वाले employees) fetch करना चाहते हैं, तो FilteredRowSet perfect है।
5. JoinRowSet
यह multiple RowSets को join करने के लिए use किया जाता है। जैसे दो या अधिक tables के data को combine करके single RowSet के रूप में दिखाना हो तो JoinRowSet काम आता है।
RowSet की Main Features
- Disconnected Mode Support
- Serializable (Network पर भेजा जा सकता है)
- Scrollable और Updatable दोनों
- XML Format में Data Representation
- Filtering और Joining की सुविधा
- Event Notification Support
RowSet Interface Hierarchy
RowSet एक interface है जो ResultSet को extend करता है। इसका implementation javax.sql पैकेज में मिलता है। नीचे इसका simplified hierarchy diagram दिया गया है:
| Interface | Package | Description |
|---|---|---|
| RowSet | javax.sql | ResultSet को extend करता है और RowSet models define करता है। |
| JdbcRowSet | javax.sql.rowset | Connected RowSet implementation। |
| CachedRowSet | javax.sql.rowset | Disconnected RowSet implementation। |
| WebRowSet | javax.sql.rowset | XML में data store करता है। |
| FilteredRowSet | javax.sql.rowset | Data को filter करने के लिए use होता है। |
| JoinRowSet | javax.sql.rowset | Multiple RowSets को join करता है। |
RowSet के फायदे (Advantages)
- Connection बंद होने के बाद भी data access करना possible है।
- Lightweight और memory-efficient data structure है।
- XML support के कारण web applications में बहुत useful है।
- Synchronization आसान है — offline changes बाद में database में update हो जाते हैं।
- Scrollable और updatable functionality provide करता है।
- Less resource consumption क्योंकि continuous connection की जरूरत नहीं होती।
Disconnected RowSet कैसे काम करता है?
जब हम CachedRowSet use करते हैं, तो यह data को database से fetch करता है और उसे memory में store कर लेता है। अब आप इस data पर scroll, update, delete, या insert operations perform कर सकते हैं। जब सारे operations complete हो जाते हैं, तो आप acceptChanges() method call करके changes को database में वापस synchronize कर सकते हैं।
Example: Using CachedRowSet
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
public class RowSetExample {
public static void main(String[] args) throws Exception {
CachedRowSet crs = new CachedRowSetImpl();
crs.setUrl("jdbc:mysql://localhost:3306/college");
crs.setUsername("root");
crs.setPassword("1234");
crs.setCommand("SELECT * FROM student");
crs.execute();
while (crs.next()) {
System.out.println(crs.getInt("id") + " " + crs.getString("name"));
}
crs.close();
}
}
RowSet में Event Handling
RowSet event-driven model को support करता है। यानी जब भी RowSet में कोई change होता है (जैसे cursor move होना, row update होना), तो listener को notification भेजी जाती है। इसके लिए RowSetListener interface का use किया जाता है।
RowSetListener के Main Methods
- rowSetChanged(RowSetEvent e): जब पूरे RowSet में बदलाव होता है।
- rowChanged(RowSetEvent e): जब किसी specific row में update होता है।
- cursorMoved(RowSetEvent e): जब cursor नई row पर जाता है।
ResultSet और RowSet में अंतर
| Parameter | ResultSet | RowSet |
|---|---|---|
| Connection | Always connected to database | Can be disconnected (CachedRowSet) |
| Serialization | Not serializable | Serializable |
| Usage | Simple read operations | Advanced data handling with filtering and joining |
| Event Support | No event model | Supports RowSetListener |
| XML Data | Not supported | Supported via WebRowSet |
RowSet Implementation Classes
JDBC API में RowSet के लिए कुछ ready-made classes provide की गई हैं जो developers को direct use करने की सुविधा देती हैं।
- com.sun.rowset.CachedRowSetImpl – CachedRowSet का default implementation
- com.sun.rowset.JdbcRowSetImpl – Connected RowSet का implementation
- com.sun.rowset.WebRowSetImpl – WebRowSet का XML supported implementation
- com.sun.rowset.FilteredRowSetImpl – FilteredRowSet के लिए implementation
- com.sun.rowset.JoinRowSetImpl – Multiple RowSets को join करने वाला implementation
RowSet के Real-World Uses
RowSet का उपयोग केवल academic projects में नहीं, बल्कि बड़े enterprise applications में भी होता है। कुछ common use cases नीचे दिए गए हैं:
- Offline Data Editing: जब users को internet connection के बिना data modify करना हो।
- Web Applications: XML-based WebRowSet data exchange के लिए।
- Data Synchronization: Local changes को बाद में server-side database में sync करने के लिए।
- Mobile Applications: Lightweight और disconnected data model होने के कारण perfect choice।
RowSet Use करने के Best Practices
- केवल ज़रूरी columns fetch करें ताकि memory बची रहे।
acceptChanges()call करने से पहले data validation जरूर करें।- Try-catch block का use करें ताकि exceptions handle हो सकें।
- Large datasets के लिए
CachedRowSetका use न करें — इससे memory overload हो सकती है। - Always close RowSet object after use।
RowSet के Important Methods
| Method | Description |
|---|---|
| setCommand(String sql) | SQL query set करने के लिए। |
| execute() | Query को execute करने के लिए। |
| acceptChanges() | Offline किए गए changes को database में update करता है। |
| toXml(OutputStream out) | RowSet को XML format में convert करता है। |
| populate(ResultSet rs) | ResultSet से RowSet में data load करता है। |
Summary (Quick Revision Notes)
- RowSet JDBC का advanced version है जो ResultSet को extend करता है।
- यह disconnected mode में data handle कर सकता है।
- मुख्य types हैं: CachedRowSet, JdbcRowSet, WebRowSet, FilteredRowSet, JoinRowSet।
- Event handling, XML support और filtering जैसी features provide करता है।
- Offline data synchronization के लिए बहुत उपयोगी है।
- Best for lightweight, portable, and efficient data handling in Java.