जैसा कि बताया गया है, जेपीए <> ईजेबी, वे भी संबंधित नहीं हैं। ईजेबी 3 जेपीए का लाभ उठाने के लिए होता है, लेकिन यह इसके बारे में है। हमारे पास जेपीए का उपयोग करके सामान का एक गुच्छा है जो ईजेबी चलाने के करीब भी नहीं आता है।
आपकी समस्या तकनीक नहीं है, यह आपका डिज़ाइन है।
या, मुझे कहना चाहिए, आपका डिज़ाइन बहुत अधिक आधुनिक ढांचे पर एक आसान फिट नहीं है।
विशेष रूप से, आप कई HTTP अनुरोधों पर लेनदेन को जीवंत रखने की कोशिश कर रहे हैं।
स्वाभाविक रूप से, सबसे आम मुहावरे यह है कि प्रत्येक अनुरोध एक बड़े लेनदेन के हिस्से होने के बजाय प्रत्येक अनुरोध में एक या अधिक लेनदेन होता है।
एक ही चर्चा में "स्टेटलेस" और "लेनदेन" शब्द का उपयोग करते समय भी स्पष्ट भ्रम होता है, क्योंकि लेनदेन स्वाभाविक रूप से राज्यव्यापी होते हैं।
आपका बड़ा मुद्दा मैन्युअल रूप से आपके लेनदेन का प्रबंधन कर रहा है।
यदि आप कई HTTP अनुरोधों पर लेनदेन कर रहे हैं, और उन HTTP अनुरोधों को एक दूसरे के ठीक बाद "बहुत तेज़" चलाना होता है, तो आपको वास्तव में कोई वास्तविक समस्या नहीं होनी चाहिए, बचाओ कि आपको करना होगा सुनिश्चित करें कि आपके HTTP अनुरोध डेटाबेस लेनदेन सुविधा का लाभ उठाने के लिए एक ही डीबी कनेक्शन का उपयोग कर रहे हैं।
यह सरल शब्दों में है, आप डीबी से कनेक्शन प्राप्त करते हैं, सत्र में इसे सामान देते हैं, और सुनिश्चित करते हैं कि लेनदेन की अवधि के लिए, आपके सभी HTTP अनुरोध न केवल उसी सत्र के माध्यम से जाते हैं, लेकिन इस तरह से वास्तविक कनेक्शन अभी भी मान्य है। विशेष रूप से, मुझे विश्वास नहीं है कि शेल्फ जेडीबीसी कनेक्शन बंद है जो वास्तव में एक मशीन से दूसरे मशीन में विफलता या लोड संतुलन से बच जाएगा।
तो, बस, आप डीबी लेनदेन उपयोग करना चाहते हैं, तो आप सुनिश्चित करें कि आपके एक ही DB कनेक्शन का उपयोग कर की जरूरत है।
अब, यदि आपके लंबे चलने वाले लेन-देन में "उपयोगकर्ता इंटरैक्शन" है, यानी आप डीबी लेनदेन शुरू करते हैं और उपयोगकर्ता को "कुछ करने" की प्रतीक्षा करते हैं, तो काफी सरलता से, यह डिज़ाइन सभी गलत है। आपको लगता है कि, जब तक रहते थे लेनदेन, विशेष रूप से इंटरैक्टिव वातावरण में ऐसा करने के लिए नहीं करना चाहते, बस बुरा कर रहे हैं। जैसा बैड "स्ट्रीम पार"। ऐसा मत करो बैच लेनदेन अलग हैं, लेकिन इंटरैक्टिव लंबे रहते थे लेनदेन बुरा कर रहे हैं।
आप अपने इंटरैक्टिव लेन-देन को व्यावहारिक रूप से कम रहने के रूप में रखना चाहते हैं।
अब, यदि आप यह सुनिश्चित नहीं कर सकते हैं कि आप अपने लेनदेन के लिए उसी डीबी कनेक्शन का उपयोग करने में सक्षम होंगे, तो बधाई हो, आप अपने लेनदेन को लागू कर सकते हैं। इसका मतलब है कि आप अपने सिस्टम और डेटा को डिज़ाइन करते हैं जैसे कि आपके पास बैक एंड पर कोई लेनदेन क्षमता नहीं है।
इसका अनिवार्य रूप से मतलब है कि आपको अपने डेटा को "प्रतिबद्ध" करने के लिए अपने तंत्र के साथ आने की आवश्यकता होगी।
ऐसा करने का एक अच्छा तरीका यह होगा कि आप एक ही "लेनदेन" दस्तावेज़ में अपना डेटा बढ़ाते हैं, फिर उस दस्तावेज़ को "सहेजने" दिनचर्या में फ़ीड करें जो वास्तविक काम करता है। जैसे, आप डेटाबेस में एक पंक्ति स्टोर कर सकते हैं, और इसे "सहेजे" के रूप में चिह्नित कर सकते हैं। आप अपनी सभी पंक्तियों के साथ ऐसा करते हैं, और आखिरकार एक दिनचर्या को कॉल करते हैं जो आपके द्वारा संग्रहीत किए गए सभी डेटा के माध्यम से चलता है, और इसे एक ही लेन-देन मिनी-बैच प्रक्रिया में "सहेजा गया" के रूप में चिह्नित करता है।
इस बीच, आपके सभी अन्य एसक्यूएल "अनदेखा" डेटा जो "सहेजे गए" नहीं हैं। कुछ समय के टिकटों में फेंको और एक रिपर प्रक्रिया स्कैवेंगिंग करें (यदि आप वास्तव में परेशान करना चाहते हैं - यह वास्तव में डीबी में मृत पंक्तियों को छोड़ने के लिए सस्ता हो सकता है, मात्रा पर निर्भर करता है), ये मृत "सहेजे गए" पंक्तियां हैं, क्योंकि ये हैं "असम्बद्ध" लेनदेन।
यह उतना बुरा नहीं है जितना लगता है। यदि आप वास्तव में एक स्टेटलेस वातावरण चाहते हैं, जो मेरे जैसा लगता है, तो आपको ऐसा कुछ करने की आवश्यकता होगी।
दिमाग, इन सभी में दृढ़ता तकनीक वास्तव में इसके साथ कुछ लेना देना नहीं है। समस्या यह है कि तकनीक के बजाए आप अपने लेन-देन का उपयोग कैसे करते हैं।
क्या आपके प्रतिमान को ओआरएम होना चाहिए? – dacracot