Types of RowSets: CachedRowSet, WebRowSet, JoinRowSet, FilteredRowSet
Types of RowSets in Java: CachedRowSet, WebRowSet, JoinRowSet, FilteredRowSet
Introduction of RowSet in Java
Java में जब हम Database से data fetch करते हैं, तो अक्सर ResultSet का use करते हैं। लेकिन JDBC में RowSet एक advanced version है, जो scrollable, updatable और disconnected architecture को सपोर्ट करता है।
RowSet basically एक wrapper होता है ResultSet के ऊपर, जो data को memory में hold करता है और जरूरत पड़ने पर database से connect या disconnect हो सकता है।
Java में कई प्रकार के RowSets होते हैं जैसे CachedRowSet, WebRowSet, JoinRowSet, और FilteredRowSet — और हर एक का अपना खास use-case है। Exam point of view से यह topic बहुत important है क्योंकि ये JDBC के practical part से जुड़ा हुआ है।
1. CachedRowSet
Definition
CachedRowSet एक ऐसा RowSet होता है जो data को memory में cachedisconnected RowSet भी कहते हैं क्योंकि data load होने के बाद यह connection बंद कर देता है।
Key Features
- Database से data fetch होने के बाद connection बंद हो जाता है।
- Data memory में store रहता है, जिससे हम offline mode में भी उसे access कर सकते हैं।
- Scrollable और Updatable होता है।
- Changes को बाद में database में sync किया जा सकता है।
Example Code
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
CachedRowSet crs = new CachedRowSetImpl();
crs.setUrl("jdbc:mysql://localhost:3306/studentdb");
crs.setUsername("root");
crs.setPassword("1234");
crs.setCommand("SELECT * FROM students");
crs.execute();
// Connection close hone ke baad bhi data accessible rahega
while(crs.next()) {
System.out.println(crs.getString("name"));
}
Use Cases
- जब हमें data को offline use करना हो।
- Web या mobile applications में जहां network connectivity हमेशा available नहीं होती।
- Lightweight applications में जहाँ frequent database connection avoid करना हो।
Advantages
- Better performance due to disconnected mode।
- Reduced database load।
- Scroll और update करने की सुविधा।
Disadvantages
- Memory consumption ज्यादा होती है क्योंकि data RAM में store होता है।
- Large dataset के लिए efficient नहीं होता।
2. WebRowSet
Definition
WebRowSet class, CachedRowSet का subclass है। इसका main feature यह है कि यह data को XML format में store और transport कर सकता है। यानी database data को XML document के रूप में represent करता है।
Key Features
- Data को XML format में represent करता है।
- Easy data sharing between different platforms।
- Support for disconnected operation।
Example Code
import javax.sql.rowset.WebRowSet;
import com.sun.rowset.WebRowSetImpl;
WebRowSet wrs = new WebRowSetImpl();
wrs.setUrl("jdbc:mysql://localhost:3306/studentdb");
wrs.setUsername("root");
wrs.setPassword("1234");
wrs.setCommand("SELECT * FROM students");
wrs.execute();
// XML में data लिखना
FileWriter writer = new FileWriter("students.xml");
wrs.writeXml(writer);
writer.close();
Use Cases
- Web applications में data को XML format में share करने के लिए।
- जब हमें data को platform-independent format में भेजना हो।
- Web services या APIs में XML data exchange के लिए।
Advantages
- XML-based format होने से interoperability आसान होती है।
- Data sharing और portability में helpful।
Disadvantages
- XML format होने के कारण file size बढ़ जाती है।
- Processing time थोड़ा ज्यादा लगता है।
3. JoinRowSet
Definition
JoinRowSet का use तब किया जाता है जब हमें दो या अधिक RowSets को join करना हो, जैसे SQL के JOIN clause में होता है। इसका फायदा यह है कि हमें database में join query चलाने की जरूरत नहीं पड़ती, बल्कि हम Java side पर ही RowSets को combine कर सकते हैं।
Key Features
- Multiple RowSets को logically join करने की सुविधा।
- Disconnected mode में भी काम कर सकता है।
- Data को dynamically merge किया जा सकता है।
Example Code
import javax.sql.rowset.JoinRowSet;
import com.sun.rowset.JoinRowSetImpl;
import com.sun.rowset.CachedRowSetImpl;
CachedRowSet crs1 = new CachedRowSetImpl();
crs1.setCommand("SELECT * FROM students");
crs1.execute();
CachedRowSet crs2 = new CachedRowSetImpl();
crs2.setCommand("SELECT * FROM courses");
crs2.execute();
JoinRowSet jrs = new JoinRowSetImpl();
jrs.addRowSet(crs1, "course_id");
jrs.addRowSet(crs2, "course_id");
while(jrs.next()) {
System.out.println(jrs.getString("student_name") + " - " + jrs.getString("course_name"));
}
Use Cases
- जब हमें बिना database join query के दो RowSets merge करने हों।
- Offline data merging operations में।
Advantages
- Database load कम करता है।
- Dynamic join operations memory में ही execute होते हैं।
Disadvantages
- Large data sets के लिए slow performance।
- Memory usage बढ़ता है।
4. FilteredRowSet
Definition
FilteredRowSet का use तब किया जाता है जब हमें RowSet data पर कुछ filter या condition apply करनी हो — जैसे SQL में WHERE clause होता है। इससे हम data को memory में filter कर सकते हैं बिना दोबारा database query execute किए।
Key Features
- Data को filter करने के लिए custom filters apply किए जा सकते हैं।
- Disconnected mode में भी filtering possible।
- Dynamic data view generate करने के लिए helpful।
Example Code
import javax.sql.rowset.FilteredRowSet;
import com.sun.rowset.FilteredRowSetImpl;
FilteredRowSet frs = new FilteredRowSetImpl();
frs.setCommand("SELECT * FROM students");
frs.execute();
// Filter लागू करना
RangeFilter filter = new RangeFilter(60, 100, "marks");
frs.setFilter(filter);
while(frs.next()) {
System.out.println(frs.getString("name") + " - " + frs.getInt("marks"));
}
Use Cases
- Data को memory में ही filter करने के लिए।
- जब database query दोबारा execute नहीं करनी हो।
Advantages
- Reduced database calls।
- Dynamic filtering operations possible।
Disadvantages
- Large dataset में performance slow हो सकता है।
- Extra memory consumption।
Comparison Table: Types of RowSets
| RowSet Type | Mode | Main Feature | Use Case |
|---|---|---|---|
| CachedRowSet | Disconnected | Data memory में store होता है | Offline data access |
| WebRowSet | Disconnected | Data XML format में store होता है | Data sharing via XML |
| JoinRowSet | Disconnected | Multiple RowSets को join करता है | Offline joins |
| FilteredRowSet | Disconnected | Filter apply करता है | Memory-based filtering |
Important Points to Remember
- RowSet, ResultSet का advanced और flexible version है।
- सभी RowSets
javax.sql.rowsetpackage में available होते हैं। - हर RowSet disconnected architecture support करता है।
- Practical exams में CachedRowSet और FilteredRowSet के examples बहुत पूछे जाते हैं।
Quick Exam Notes
- CachedRowSet: Offline data access के लिए।
- WebRowSet: XML format में data exchange के लिए।
- JoinRowSet: Multiple RowSets को join करने के लिए।
- FilteredRowSet: RowSet data को filter करने के लिए।
- सभी RowSets scrollable और updatable होते हैं।
- Package:
javax.sql.rowset - Implementations:
com.sun.rowsetpackage में होती हैं।