Realmente, se você acessar a base de dados diretamente da aplicação Swing, você estará expondo mais sua base de dados.
Mas isso não significa que você não possa usar Swing para desenvolver sua aplicação com segurança. Ao invés de acessar diretamente a base de dados, acesse a base de dados indiretamente, através de um servlet. O cliente Swing faria uma requisição (por exemplo, uma lista de usuários) e o servidor acessa o banco de dados e devolve a resposta para o cliente Swing.
É como se fosse uma aplicação WEB mesmo, só que ao invés do browser, você tem a aplicação swing. Se você pensar bem o browser é uma aplicação desktop, e nem por isso acessa a base de dados diretamente.
Você teria que aprender servlet, mas não precisa de JSP, Struts, Hibernate, etc.
Eu já fiz uma aplicação desse tipo. Usei XStream para transformar os dados para XML antes de transportar do servidor para o cliente, e vice-versa.
Veja esse post que tem a ver com o que você está querendo:
http://www.guj.com.br/posts/list/40701.java
FredMP:
Olá! Estou participando de um projeto no qual o cliente possui algumas poucas filiais de sua empresa e quer disponibilizar um sistema simples para controle de uma de suas atividades. Estou começando a desenvolver profissionalmente e por isso sugiram algumas dúvidas: A segurança das informações é essencial e por isso pensei se nesse caso seria melhor uma aplicação web rodando em um navegador ou um cliente swing acessando o banco pelo internet. Qual destes dois modelos iria expor menos a base de dados da empresa? E qual seria a indicação da galera mais experiente aqui do fórum levando-se em conta outros aspectos como desempenho, etc? Desde já agradeço a quem puder passar alguma dica.
att,
Fred