Podle mých zkušeností má pl/java několik zásadních problémů:
- Je obtížné jej nainstalovat na server postgresql. I když najdete binární sestavení pro svou verzi postgresql (což je také obtížné) – vyžaduje to žonglování s konfigurací a knihovnou.
- První volání uložené procedury Java bude mít za následek nový proces JVM. Procesy JVM jsou v rozsahu připojení a vyžadují určité množství paměti pro hromadu java, takže pokud použijete fond připojení, skončíte s 10–20 spuštěnými a většinu času nevyužitými JVM, což spotřebovává RAM vašeho serveru
- pl/java může komunikovat s postgresql databází pomocí vlastního ovladače JDBC, který emuluje běžné použití JDBC, ale má určité problémy s implementací, které vás možná překvapí. Zvláště pokud chcete používat kurzory JDBC nebo jiné ne tak běžné věci.
- Protokolování pl/java je poněkud zvláštní – je to kvůli implementaci interního zpracování chyb postgresql. Například – pokud něco zaznamenáte pomocí rozhraní API pro protokolování java na úrovni protokolu ERROR – ukončí se připojení k serveru.
- pl/java má velmi dobrý výkon zpracování dat ve srovnání s logikou jazyka Java založená na aplikačním serveru, ale je zcela neškálovatelná – procedury pl/java jsou plně jednovláknové – postgresql zakazuje vícevláknové procedury
- Pokud používáte interní ovladač JDBC a váš příkaz SQL obsahuje chyby – skončíte se záhadnou chybovou zprávou v protokolu postgresql – zcela nesouvisející se skutečným problémem.
Výsledkem je, že můžete s určitým úspěchem používat procedury pl/java, ale musíte to dělat velmi opatrně a pravděpodobně budete muset přemýšlet o vylepšení návrhu své aplikace.