Esta es una pregunta muy amplia, pero el enfoque habitual para la compatibilidad de múltiples bases de datos es doble:
- Coloque todas sus sentencias SQL en archivos de recursos y cargue el recurso apropiado en tiempo de ejecución
- Cuando la declaración o las estructuras lógicas difieran (que requieran diferentes parámetros, etc.), escriba la lógica para ambas bases de datos y elija la ruta correcta según la base de datos que esté utilizando.
Algunas capas de abstracción de bases de datos (Hibernate, Spring JDBC) pueden ayudar con gran parte del trabajo, pero aún deberá ser muy consciente de las diferencias y codificarlas.