От моя опит pl/java има някои големи проблеми:
- Трудно е да се инсталира в postgresql сървър. Дори ако намерите двоична компилация за вашата версия на postgresql (което също е трудно) - тя се нуждае от известно жонглиране на конфигурацията и пътя на библиотеката.
- Първото извикване на съхранена процедура на Java ще доведе до нов JVM процес. JVM процесите са с обхват на връзката и изискват известно количество памет за java heap, така че ако използвате пул за връзки, ще завършите с 10-20 стартирани JVM и неизползвани през повечето време, консумирайки RAM на вашия сървър
- pl/java може да комуникира с базата данни postgresql, използвайки самостоятелно създаден JDBC драйвер, който емулира обичайното използване на JDBC, но има някои проблеми с внедряването, които може да ви изненадат. Особено ако искате да използвате JDBC cusrors или други не толкова обичайни неща.
- Регистрирането на pl/java е доста специално - това се дължи на внедряването на вътрешна обработка на грешки в postgresql. Например - ако регистрирате нещо с java logging api на ниво на регистрационен файл ERROR - това ще прекрати връзката ви със сървъра.
- pl/java има много добра производителност при обработка на данни в сравнение с базираната на сървър на приложения java логика, но е напълно неразширяема - pl/java процедурите са изцяло еднонишкови - postgresql забранява многонишкови процедури
- Ако използвате вътрешен JDBC драйвер и вашият SQL израз съдържа грешки - ще получите криптично съобщение за грешка в журнала на postgresql - напълно несвързано с реалния проблем.
Като резултат - можете да използвате pl/java процедури с известен успех, но трябва да го правите много внимателно и вероятно трябва да помислите за подобряване на дизайна на вашето приложение.