Andiamo per ordine, distinguendo lato sistemistico da lato applicativo.
Dal punto di vista sistemistico le prestazioni (e sicurezza) migliori si ottengono con un tunnel ssh.
In sostanza sul client avrai "qualcosa" che apre una connessione ssh con il server, veicolando il traffico di una certa porta (o intervallo di porte TCP) lì sopra.
In questa fattispecie non c'è differenza tra le applicazioni: funzionano nello stesso modo "in locale" e "in remoto".
E' una tecnica frequente, collaudata, ben funzionante e sicura.
Richiede però l'instaurazione di questo "tunnel", cosa banale in altri ambienti (es. delphi), non ti so dire per java.
Lato applicazione puoi, come segnalato, creare una sorta di "filtro", cioè un'applicazione che funziona sul server e risponde alla richieste.
Però sono lente, complesse, spesso insicure rispetto al sistema "brutale".
Lato applicazione, nel caso di un utilizzo "remoto", va posta grande attenzione a limitare al massimo le query che si predispongono.
Mentre non è un problema qualcosa del genere
select * from clienti
in rete LAN, può essere un grave errore quando interroghi remotamente, perchè il dataset lo devi reperire, e questo può essere assai grande (pensa a decine di migliaia di clienti e magari un centinaio di campi) e richiedere secondi o anche decine di secondi per "arrivare".
Ovviamente un'applicazione che si "congela" per 10 secondi ogni volta che mostra l'elenco dei clienti (in questo esempio) è pessima.
Quindi ridurrai al massimo il numero dei campi prelevati (proiezione) e anche il numero delle righe (selezione), in modo da reperire "pacchetti" di dati (sul tunnel puoi comprimerli, ma c'è comunque un overhead dovuto all' "accrocchio", più quello proprio telematico) di modeste dimensioni.
Se progetti "fin da subito" l'applicazione in questo modo può funzionare dignitosamente anche in ambito distribuito (tipicamente meglio rispetto ad applicazioni web o simili).
Inoltre, quando funziona in locale, è ancora più veloce e reattiva (proprio perchè riduce sensibilmente il carico di trasmissione)