Using CachedRowSet: Offline Data Manipulation and Synchronization
Using CachedRowSet: Offline Data Manipulation and Synchronization
Using CachedRowSet क्या है?
Java में CachedRowSet एक बहुत ही powerful class है जो offline data manipulation और data synchronization के लिए use की जाती है। इसका मतलब ये है कि आप database से data fetch करने के बाद connection बंद कर सकते हैं और फिर भी उस data पर operation perform कर सकते हैं। जब आप changes कर लें, तो बाद में उन्हें database में synchronize कर सकते हैं।
यह feature javax.sql.rowset package के अंदर आता है और यह RowSet interface को implement करता है। Simple words में कहें तो, CachedRowSet ऐसा object है जो data को temporarily memory में रखता है ताकि उसे offline modify किया जा सके।
CachedRowSet की जरूरत क्यों पड़ती है?
Normally, जब हम ResultSet use करते हैं, तो database connection लगातार open रहना जरूरी होता है। इससे network load बढ़ता है और performance कम होती है। लेकिन CachedRowSet इस problem को solve करता है क्योंकि यह data को memory में store करके offline mode में भी operations allow करता है।
- Database connection continuously open नहीं रहता।
- Memory में data रखने की वजह से performance fast होती है।
- Network usage कम होता है।
- Offline data editing और बाद में synchronization आसान होता है।
CachedRowSet की मुख्य विशेषताएँ
- Disconnected Mode: Database से disconnect होकर भी data पर काम किया जा सकता है।
- Serializable Object: इसे easily file में save किया जा सकता है या network के जरिए भेजा जा सकता है।
- Auto Synchronization: जब connection दोबारा establish होता है, तो changes automatically database में update हो सकते हैं।
- Scrollable और Updatable: आप record को scroll और update दोनों कर सकते हैं।
CachedRowSet की Architecture
CachedRowSet internally RowSet interface को implement करता है और यह JDBC driver के जरिए database से data fetch करता है। नीचे इसकी working process explain की गई है:
| Step | Description |
|---|---|
| 1 | CachedRowSet object create किया जाता है। |
| 2 | Database से connection establish करके data fetch किया जाता है। |
| 3 | Data CachedRowSet में store हो जाता है और connection बंद कर दिया जाता है। |
| 4 | अब data पर offline operations (update, delete, insert) किए जा सकते हैं। |
| 5 | जब connection दोबारा open किया जाता है, तब changes database में synchronize किए जाते हैं। |
CachedRowSet कैसे बनाते हैं?
CachedRowSet को create करने के लिए RowSetProvider class का use किया जाता है। नीचे इसका simple example दिया गया है:
import java.sql.*;
import javax.sql.rowset.*;
public class CachedRowSetExample {
public static void main(String[] args) throws Exception {
CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet();
crs.setUrl("jdbc:mysql://localhost:3306/college");
crs.setUsername("root");
crs.setPassword("root");
crs.setCommand("SELECT * FROM students");
crs.execute(); // Data fetch करके memory में store करेगा
while (crs.next()) {
System.out.println(crs.getInt(1) + " " + crs.getString(2));
}
crs.close();
}
}
इस example में data memory में store हो गया है और database connection close करने के बाद भी data को access किया जा सकता है।
Offline Data Manipulation
CachedRowSet का सबसे बड़ा advantage है कि आप offline रहते हुए भी data में changes कर सकते हैं। उदाहरण के लिए, आप किसी row को update या delete कर सकते हैं।
crs.absolute(2); // दूसरी row पर जाएँ
crs.updateString("name", "Rohit Sharma");
crs.updateRow();
System.out.println("Row updated offline!");
ऊपर दिए गए code से दूसरी row की value offline update हो जाएगी, और जब connection दोबारा active होगा, तो यह change database में apply किया जा सकता है।
Data Synchronization कैसे होता है?
Synchronization का मतलब है — offline changes को वापस database में update करना। जब CachedRowSet database से दोबारा connect होता है, तो वह internally acceptChanges() method के जरिए सारे changes को database में reflect कर देता है।
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/college", "root", "root");
crs.acceptChanges(con);
System.out.println("Changes synchronized with database!");
इस तरह offline changes permanent रूप में database में update हो जाते हैं।
CachedRowSet के फायदे
- Offline Operation: Connection बंद होने के बाद भी data accessible रहता है।
- Memory Efficient: केवल required data load होता है।
- Portable: इसे serialize करके भेजा जा सकता है।
- Reduced Network Load: Database connection बार-बार open करने की जरूरत नहीं।
- Scrollable and Updatable: ResultSet की सभी सुविधाएँ उपलब्ध।
CachedRowSet की Limitations
- Memory में data store होता है, इसलिए बहुत large data sets के लिए suitable नहीं है।
- Synchronization के दौरान conflicts आ सकते हैं अगर multiple users data modify करें।
- Temporary storage होने के कारण, long-term data persistence के लिए उपयोगी नहीं।
RowSet के Types
Java में कई प्रकार के RowSet available हैं, और CachedRowSet उनमें से एक है। आइए इनके नाम और use cases देखते हैं:
| RowSet Type | Description |
|---|---|
| JdbcRowSet | Connected RowSet जो live connection के साथ काम करता है। |
| CachedRowSet | Disconnected RowSet जो data को memory में रखता है। |
| WebRowSet | XML format में data store करने के लिए use होता है। |
| FilteredRowSet | Data को filter करके specific rows access करने में मदद करता है। |
| JoinRowSet | Multiple RowSet objects को join करने के लिए use किया जाता है। |
Real-Life Example: College Database
मान लीजिए आपके पास एक students नाम का table है जिसमें students का data store है। आप चाहते हैं कि किसी student की marks offline update करके बाद में database में update हों। इसके लिए आप CachedRowSet का use कर सकते हैं।
crs.setCommand("SELECT * FROM students WHERE dept='CSE'");
crs.execute();
crs.absolute(1);
crs.updateInt("marks", 90);
crs.updateRow();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/college", "root", "root");
crs.acceptChanges(con);
System.out.println("Student marks updated successfully!");
Best Practices for CachedRowSet
- Always use try-with-resources block ताकि resources properly close हों।
- Synchronization से पहले data validation जरूर करें।
- Large data sets के लिए database side filtering (WHERE clause) use करें।
- conflict resolution strategies implement करें अगर multiple users modify कर रहे हों।
Important Methods of CachedRowSet
| Method | Description |
|---|---|
| setCommand(String sql) | SQL query set करता है। |
| execute() | Query को execute करके data memory में load करता है। |
| updateRow() | Current row को update करता है। |
| insertRow() | नई row insert करता है। |
| deleteRow() | Current row delete करता है। |
| acceptChanges(Connection con) | Offline किए गए changes को database में synchronize करता है। |
Quick Exam Notes
- CachedRowSet एक disconnected RowSet है।
- यह data को memory में store करता है।
- Offline mode में data modify किया जा सकता है।
- acceptChanges() method synchronization के लिए use होता है।
- यह Serializable, Scrollable और Updatable होता है।
- RowSetProvider class CachedRowSet बनाने के लिए use होती है।
- Performance बढ़ाने और network load घटाने में मदद करता है।