На уровне JPA единственное, что вы можете сделать, - это использовать API JPA используемой в данный момент библиотеки персистентности (т. Е. При использовании hibernate не используйте Hibernate.initialize ()).
На уровне БД, ваша лучшая ставка - сохранять простоту, так как шансы на различия в поведении возрастают, когда вы уходите от наиболее частых вариантов использования. В частности, это может означать, что не нужно использовать составные первичные ключи, не хранить двоичные данные, вообще не использовать выполнение SQL ... Уверен, у других будет больше хороших примеров практических приемов, которые позволят вам легко переходить из одной базы данных в другую.
Вышеизложенное позволило мне переключать одно приложение между PostgreSQL и Oracle, а другое - между PostgreSQL и несколькими «диалектами» (в переводе на спящий язык) MySQL.