DSL (Domain-specific language) - Предметно-ориентированный язык. Запрос к базе можно стоить вызовом функций, например
select(person.name).from(person).where(person.id.eq(10)).orderBy(person.lastName.asc())
При этом уменьшается возможность ошибиться (опечатка в имени не возможна - программа не скомпилируется), идет контроль типов...
- Работа с БД требует наличие postgres и выполнить скрипты из init.sql (настройки соединения см. com.zemrow.test.dsl.DBConst.java)
- затем необходимо выполнить com.zemrow.test.dsl.liquibase.RunLiquibase он создаст таблицы
- querydsl
- запустить com.zemrow.test.dsl.querydsl.RunQuerydslGenerateConst будут сгенерированы константы и entity в пакет com.zemrow.test.dsl.querydsl.dao.autogen
- использование в com.zemrow.test.dsl.querydsl.RunQuerydslTest
- jooq
- запустить com.zemrow.test.dsl.jooq.RunJooqGenerateConst будут сгенерированы константы и entity в пакет com.zemrow.test.dsl.jooq.autogen
- использование в com.zemrow.test.dsl.jooq.RunJooqTest
Основная задумка: база является основой
- изменения вносятся в схему БД (используя liquibase)
- после изменения автоматически вносятся в код (SQL константы и DSL классы)
- программа перестанет компилироваться если где-то в SQL ошибка
- поверх легко написать генераторы кода для других слоев: DAO, Service, Controller, Servlet