Seems to me the concept for this precedes SQL being able to cache the query plan (for a parametrised query). This is the Client APP storing a Handle for a specific parametrised query, to encourage it to be reused. Whereas in fact SQL, nowadays, is going to reuse the query plan for "SELECT * FROM users WHERE USERNAME = ? AND ROOM = ?" every time it sees it, from whichever Client - provided that the query plan is still in cache.
Thus I can't see any benefit for it, any more.
Given that Java originates from Oracle I'm curious to know if Oracle requires Clients to cache queries, to encourage / benefit from reuse, or does it, like MS SQL, cache query plans for previously-seen parametrised SQL statements and reuse them automatically, and without any specific Client code to assist in reuse (other than parametrising the query)