मेरी समाप्ति के समय pl/java में कुछ प्रमुख मुद्दे हैं:
- इसे पोस्टग्रेस्क्ल सर्वर में स्थापित करना कठिन है। यहां तक कि अगर आपको अपने पोस्टग्रेस्क्ल संस्करण के लिए बाइनरी बिल्ड मिल जाए (जो कि मुश्किल भी है) - इसके लिए कुछ कॉन्फिगरेशन और लाइब्रेरी पाथ जॉगलिंग की जरूरत है।
- जावा संग्रहीत प्रक्रिया के लिए पहली कॉल के परिणामस्वरूप एक नई JVM प्रक्रिया होगी। जेवीएम प्रक्रियाएं कनेक्शन-स्कोप्ड हैं और जावा हीप के लिए कुछ मात्रा में मेमोरी की आवश्यकता होती है, इसलिए यदि आप कनेक्शन पूल का उपयोग करते हैं तो आप 10-20 जेवीएम के साथ समाप्त हो जाएंगे और अधिकांश समय अप्रयुक्त, आपके सर्वर रैम की खपत करेंगे
- pl/java स्व-निर्मित JDBC ड्राइवर का उपयोग करके postgresql डेटाबेस के साथ संचार कर सकता है जो सामान्य JDBC उपयोग का अनुकरण करता है, लेकिन इसमें कुछ कार्यान्वयन मुद्दे हैं जो आपको आश्चर्यचकित कर सकते हैं। विशेष रूप से यदि आप JDBC कर्सर या अन्य गैर-सामान्य चीजों का उपयोग करना चाहते हैं।
- pl/java लॉगिंग बल्कि विशेष है - यह postgresql आंतरिक त्रुटि प्रबंधन कार्यान्वयन के कारण है। उदाहरण के लिए - यदि आप त्रुटि लॉग स्तर पर जावा लॉगिंग एपीआई के साथ कुछ लॉग करते हैं - यह आपके सर्वर कनेक्शन को समाप्त कर देगा।
- pl/java में एप्लिकेशन-सर्वर आधारित जावा लॉजिक की तुलना में बहुत अच्छा डेटा प्रोसेसिंग प्रदर्शन है, लेकिन यह पूरी तरह से स्केलेबल नहीं है - pl/java प्रक्रियाएं पूरी तरह से सिंगल-थ्रेडेड हैं - पोस्टग्रेस्क्ल मल्टी-थ्रेडेड प्रक्रियाओं को मना करता है
- यदि आप आंतरिक JDBC ड्राइवर का उपयोग करते हैं और आपके SQL कथन में त्रुटियाँ हैं - तो आप postgresql लॉग में गुप्त त्रुटि संदेश के साथ समाप्त होंगे - वास्तविक समस्या से पूरी तरह से असंबंधित।
परिणामस्वरूप - आप कुछ सफलता के साथ pl/java प्रक्रियाओं का उपयोग कर सकते हैं लेकिन आपको इसे बहुत सावधानी से करने की आवश्यकता है और शायद आपको अपने एप्लिकेशन डिज़ाइन को बेहतर बनाने के बारे में सोचने की आवश्यकता है।