Berdasarkan pengalaman saya, pl/java memiliki beberapa masalah besar:
- Sulit untuk menginstalnya ke server postgresql. Bahkan jika Anda menemukan build biner untuk versi postgresql Anda (yang juga sulit) - perlu beberapa konfigurasi dan pengaturan jalur library.
- Panggilan pertama ke prosedur tersimpan java akan menghasilkan proses JVM baru. Proses JVM memiliki cakupan koneksi dan memerlukan sejumlah memori untuk java heap, jadi jika Anda menggunakan kumpulan koneksi, Anda akan berakhir dengan 10-20 JVM yang dimulai dan tidak digunakan sebagian besar waktu, menghabiskan RAM server Anda
- pl/java dapat berkomunikasi dengan database postgresql menggunakan driver JDBC buatan sendiri yang mengemulasi penggunaan JDBC umum, tetapi memiliki beberapa masalah implementasi yang mungkin mengejutkan Anda. Terutama jika Anda ingin menggunakan cusror JDBC atau hal-hal lain yang tidak umum.
- Log pl/java agak istimewa - ini karena implementasi penanganan kesalahan internal postgresql. Misalnya - jika Anda mencatat sesuatu dengan java logging api pada tingkat log ERROR - koneksi server Anda akan dihentikan.
- pl/java memiliki kinerja pemrosesan data yang sangat baik dibandingkan dengan logika java berbasis server aplikasi, tetapi sama sekali tidak dapat diskalakan - prosedur pl/java sepenuhnya berulir tunggal - postgresql melarang prosedur multi-utas
- Jika Anda menggunakan driver JDBC internal dan pernyataan SQL Anda berisi kesalahan - Anda akan berakhir dengan pesan kesalahan samar di log postgresql - sama sekali tidak terkait dengan masalah sebenarnya.
Hasilnya - Anda dapat menggunakan prosedur pl/java dengan beberapa keberhasilan tetapi Anda harus melakukannya dengan sangat hati-hati dan mungkin Anda perlu memikirkan untuk meningkatkan desain aplikasi Anda.