Oracle membuat kursor untuk setiap resultset dan melepaskannya setelah menutup resultset (jdbc ResultSet.close() atau yang serupa). Default dari 50 kursor terbuka per sesi sudah cukup untuk aplikasi yang dirancang dengan baik (setelah saya mengukurnya, dan dalam mode produksi tidak pernah lebih dari 20).
Anda harus memeriksa cara membuat Hibernate untuk menutup hasil setelah mengambil. Secara umum, saya tidak dapat membayangkan sesi apa yang harus dilakukan jika itu benar-benar membutuhkan 1000 kursor terbuka. Saya tidak pernah melihat max_open_cursors lebih dari 1000 set, jadi, saya rasa, itu juga cukup untuk aplikasi yang dirancang dengan buruk (tapi... tidak ada batasan untuk kesempurnaan pada kenyataannya, dan saya tidak pernah menggunakan Hibernate).
Setiap kursor berarti beberapa memori, jadi meningkatkan max_open_cursors bukanlah solusi harga nol.