मुझे एपीआई स्टेटस "आपके एसक्यूएल मैप्स के साथ काम करने के लिए एक थ्रेड सेफ क्लाइंट" पता है, लेकिन मैं समझना चाहता हूं कि यह थोड़ा बेहतर कैसे काम करता है और सोच रहा था कि कोई भी इस इनए बहु-थ्रेडेड वातावरण को चला रहा है या नहीं लेनदेन के साथ। उदाहरण का उपयोग कर के लिए:iBatis SqlMapClient और थ्रेड सुरक्षा
void doSomeSql() throws SQLException{
sqlMapper.startTransaction();
sqlMapper.startBatch();
final Map paramMap = new HashMap();
paramMap.put("data", "data");
Integer num = (Integer) sqlMapper.queryForObject("getRowCount", paramMap);//get row count
sqlMapper.insert("insertData", paramMap); //insert row
num = (Integer) sqlMapper.queryForObject("getRowCount", paramMap);//get row count again
sqlMapper.executeBatch();
sqlMapper.commitTransaction();
}
इस जहां एक से अधिक थ्रेड यह कॉल कर सकते हैं पर इस्तेमाल किया गया था और वहाँ केवल एक साझा sqlMapper वस्तु है वहाँ कुछ धागे कि बैच को क्रियान्वित कर रहे हैं होगा क्योंकि एक और धागा executeBatch कहा जाता है()? यदि मेरे पास अन्य धागे में समान sqlMapper का उपयोग करके हटाए गए अपडेट आदि को करने के कई अन्य तरीके हैं, तो यह एक और समस्या बन जाती है।
मैं एक धागे में एक लेनदेन शुरू नहीं करना चाहता, और पिछले धागे से पहले एक और धागा प्रतिबद्ध है।
मुझे समझ में आता है कि मैं इन सब पर सिंक्रनाइज़ कर सकता हूं, लेकिन इसके बजाय इसे नहीं करना चाहिए।