DDL и create.sql
Описание
В конфигурации модели можно указывать ddl-скрипты, которые собираются и на основе их
формируется скрипт create.sql
, который используется для создания структры базы данных.
Пример использования:
<root>
<dbm>
<model name="my-model">
<!-- скрипт из указанного файла -->
<ddl name="ddl.1"
stage="afterTables"
file="#{path}/script1.sql"/>
<!-- генерация скрипта с помощью gsp -->
<ddl name="ddl.2"
stage="tables"
file="#{path}/script1.gsp"/>
<!-- генерация ddl с помощью ddl-провайдера -->
<ddl name="ddl.3"
stage="afterTables"
class="jandcode.core.dbm.ddl.DDLProvider"/>
</model>
</dbm>
</root>
ddl.1
- можно просто указать файл с текстом ddl-операторов, разделенных строкой ~~
,
которая должна быть в начале строки и в этой строке более ничего быть не должно:
create table t1(
id varchar(10)
)
~~
create table t2(
id varchar(10)
)
~~
ddl.2
- можно указать gsp-скрипт, который сгенерирует текст ddl-операторов,
разделенных ~~
. Примеры можно посмотреть в
jandcode/core/dbm/dbstruct/ddl/domain-table.gsp
и других файлов в этом пакете.
ddl.3
- можно указать реализатор интерфейса
jandcode.core.dbm.ddl.DDLProvider
, который вернет набор ddl-операторов. Пример
реализации: jandcode.core.dbm.ddl.impl.DefaultDDLProvider
.
stage
Сбор ddl осуществляется в несколько стадий. Стадии описаны в
jandcode.core.dbm.ddl.DDLStage
. В конфигурации dll
указываетя соотвествующая стадия,
для которой предназначен этот ddl.
Это позволяет разместить текст ddl в ожидаемой части общео скрипта create.sql
.
Например ddl должен расчитывать, что все таблицы уже созданы, тогда стадия
должна быть afterTables
.
dbdata
Имеется возможность сгенерировать набор insert-операторов по файлам csv и xml.
<root>
<dbm>
<model name="my-model">
<ddl name="dbdata.system"
class="jandcode.core.dbm.dbdata.DDLProvider_dbdata"
stage="data"
path="#{path}/dbdata/*.*"/>
</model>
</dbm>
</root>
Указываем провайдер jandcode.core.dbm.dbdata.DDLProvider_dbdata
, stage data
, и путь, в
котором лежат csv/xml файлы с именам, как у таблиц, для которых эти данные предназначены.
csv
Формат csv: разделитель запятая, если значение содержит запятую, то значение берется в двойные кавычки, первая строка - имена столбцов.
id,val
1,val1
2,"val2,2"
xml
Каждый тег верхнего уровня - строка. Атрибут - значение поля с соответствующем именем.
<root>
<row id="1" val="val1"/>
<row id="2" val="val2,2"/>
</root>