Skip to content

a-polyakov/com.zemrow.test.dsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пробуем DSL для работы с SQL

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

About

Пробуем DSL для работы с SQL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages