На уровне прикладного проекта можно реализовать работу с любой СУБД, поддерживаемой фреймворком ORM (OpenJPA). Для этого достаточно выполнить следующее:
-
Указать тип СУБД в виде произвольного кода в свойстве cuba.dbmsType. Код должен отличаться от используемых в платформе кодов
hsql
,postgres
,mssql
,oracle
. -
Реализовать интерфейсы
DbmsFeatures
,SequenceSupport
,DbTypeConverter
классами с именами соответственноTypeDbmsFeatures
,TypeSequenceSupport
,TypeDbTypeConverter
, гдеType
- код типа СУБД. Пакет класса имплементации должен быть таким же, как у интерфейса. -
Если проект включает базовый проект Workflow, необходимо переопределить бин
CubaJbpmSpringHelper
и его методgetHibernateDialectName()
для выбора диалекта Hibernate, используемого в jBPM. -
Создать скрипты инициализации и обновления БД в каталогах с кодом СУБД. Скрипты инициализации должны включать создание всех объектов БД, необходимых для сущностей платформы (их можно скопировать из имеющихся в каталоге
10-cuba
и др. скриптов и исправить для данной СУБД). -
Для создания и обновления БД задачами Gradle в build.gradle необходимо для этих задач указать дополнительные параметры:
task createDb(dependsOn: assemble, type: CubaDbCreation) { dbms = 'my' // DBMS code driver = 'net.my.jdbc.Driver' // JDBC driver class dbUrl = 'jdbc:my:myserver://192.168.47.45/mydb' // Database URL masterUrl = 'jdbc:my:myserver://192.168.47.45/master' // URL of a master DB to connect to for creating the application DB dropDbSql = 'drop database mydb;' // Drop database statement createDbSql = 'create database mydb;' // Create database statement timeStampType = 'datetime' // Date and time datatype - needed for SYS_DB_CHANGELOG table creation dbUser = 'sa' dbPassword = 'saPass1' } task updateDb(dependsOn: assemble, type: CubaDbUpdate) { dbms = 'my' // DBMS code driver = 'net.my.jdbc.Driver' // JDBC driver class dbUrl = 'jdbc:my:myserver://192.168.47.45/mydb' // Database URL dbUser = 'sa' dbPassword = 'saPass1' }