Пишу про проект трехлетней давности, сейчас могло поменяться.
1. У нас Flyway, миграции ручные, но так как я люблю json/jsonb, то миграций на SQL довольно мало, обычно это про изменение хранящихся объектов и делается кодом (благо флайвей умеет миграции не только скриптом). Ну и жесткие требования по совместимости, конечно.
2. Схема формально нормализуема (внутри БД только то, что нужно БД). Я про такой подход рассказывал несколько раз - на Джокере и на PgConf.
Могу поискать видео, если интересно.
3. Выборки - да Spring JDBC Templates, просто SQLем. Там очень все просто обычно.
4. Драйвер - стандартный jdbc-шный )