Я рассматриваю возможность использования jOOQ в качестве безопасного для типов, независимого от диалекта БД генератора SQL, поскольку мне нужно создать небольшой DDL-скрипт базы данных и большое количество операторов INSERT и UPDATE на лету из более крупного приложения. Затем мы предоставляем файл(ы) для загрузки.
Я создал начальную схему БД вручную в MySQL и сгенерировал классы jOOQ для работы с ней. В настоящее время JOOQ используется для создания набора вставок в пустую схему MySql). Это прекрасно работает.
Я хотел бы предложить пользователю выбор различных схем БД для экспорта в: sqlite, MySQL/Maria, Postgres, а если лицензия коммерческая, то, возможно, Access, Oracle и т.д.
List<DSLContext> dbdialects = new ArrayList<DSLContext>();
dbdialects.add(using(SQLDialect.MYSQL));
dbdialects.add(using(SQLDialect.FIREBIRD));
dbdialects.add(using(SQLDialect.SQLITE));
//other dialects including MS Access available via commercial license.
for (DSLContext create : dbdialects) {
String dialect = create.configuration().dialect().toString();
String sql = create.insertInto(EMPLOYEES)
.set(EMPLOYEES.FIRST_NAME, fn)
.set(EMPLOYEES.LAST_NAME, ln)
.getSQL(ParamType.INLINED);
System.out.println(dialect + "\t" + sql);
}
Конечно, я могу воссоздать базовую схему вручную для каждой СУБД, но это утомительно, подвержено ошибкам и кажется излишним: нет ли умного способа использовать сгенерированную метамодель из jOOQ, которую я создал с моей схемой БД MySQL для генерации схема для других диалектов SQL?