Aplicação com Banco de Dados diferentes

Galera !

Imagine uma aplicação que precisa acessar determinadas tabelas do banco de dados do cliente. ( banco = SQL SERVER )

só que essa aplicação será usada em outro cliente ( que faz o mesmo serviço ) que usa MYSQL com outras campos de tabela, e outro nome de tabela

gostaria de saber alguma forma prática deixar a Aplicação mais genérica, ou seja, conseguir utilizar tanto em 1 como no outro cliente sem muitas modificações no código
visto que tem nomes de tabelas e colunas diferentes.

Cria uma fabrica de DAOs que receba o tipo de cliente (Oracle, SQL Server, MySQL, etc) e retorne o dao correto para você.

Tente usar o hibernate, se os nomes das tabelas e campos foram completamente diferente você pode criar arquivos de configuração para cada banco, se a diferença for em prefixos ou algo assim, o hibernate tem estrategias para corrigir isso sem precisar mapear duas vezes.

http://hibernate.org

e como que ficaria o hibernate.cfg.xml??
É possível anotar vários bancos nele??

Uma pesquisa no Google já ajuda bastante:

http://www.guj.com.br/posts/list/80262.java