Last modified by christoph_lechleitner@iteg_at on 2013-01-31 07.32:56
From version 4.1
edited by christoph_lechleitner@iteg_at
on 2013-01-31 04.25:51
on 2013-01-31 04.25:51
Change comment:
Name of schema history table configurable now, and text refactoring
To version 3.1
edited by 5fbc055b7cc103006957e1ae
on 2012-06-14 07.03:35
on 2012-06-14 07.03:35
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.c hristoph_lechleitner@iteg_at1 +XWiki.5fbc055b7cc103006957e1ae - Content
-
... ... @@ -1,11 +1,9 @@ 1 1 = {{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets-Preliminary"/}}Preliminary = 2 2 3 -The SchemaManager ({{code language="none"}}org.clazzes.jdbc2xml.schema.SchemaManager{{/code}}) andSchemaEngineprovidemeansto maintainthe database schemeofanapplication, allowing you to add and delete tables, columns, relations and data in the databasealongapplication updates.3 +The SchemaManager and SchemaEngine give you an abstracted access to the database schema of your application, allowing you to add and delete tables, columns, relations and data in the database on application updates. It uses a designated table to keep track of the current schema status, which it will check whenever it is run, and update the database if it is not at the correct version. 4 4 5 - ===={{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets-SchemaHistoryTable"/}}SchemaHistoryTable====5 +SchemaManager ({{code language="none"}}org.clazzes.jdbc2xml.schema.SchemaManager{{/code}}) will create a table called SCHEMA_HISTORY if it can not find it the first time it is run. This table contains the following columns: 6 6 7 -A designated schema table, by default named SCHEMA_HISTORY, is used to keep track of the current scheme. It will be automatically at SchemaManager's first run. (% style="font-size: 10.0pt;line-height: 13.0pt;" %)SCHEMA_HISTORY contains the following columns: 8 - 9 9 {{code language="none"}} 10 10 VERSION:varchar(10), not null, primary key 11 11 DESCRIPTION:varchar(512), nullable ... ... @@ -13,21 +13,17 @@ 13 13 SERIALNR:integer(5), not null 14 14 {{/code}} 15 15 16 -In (% style="font-size: 10.0pt;font-weight: normal;line-height: 13.0pt;" %)heterogenous environments as well as in heavily modularized software architectures a single database may be shared by multiple parties each requiring a couple of tables. 17 - 18 -(% style="font-size: 10.0pt;font-weight: normal;line-height: 13.0pt;" %)To allow multiple modules (applications, libraries, other OSGi bundles) to use (% style="font-size: 10.0pt;line-height: 13.0pt;" %)JDBC2XML's SchemaManager concurrently within one database, as of JDBC 1.1.1 SchemaManager hold the name of the schema history table in an overwritable property, {{code language="none"}}versionHistoryTable{{/code}}. See (%%)[[JDBCTOXML-11>>url:https://jira.clazzes.org/browse/JDBCTOXML-11||shape="rect"]](% style="font-size: 10.0pt;line-height: 13.0pt;" %). 19 - 20 20 = {{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets-ProjectConfiguration"/}}Project Configuration = 21 21 22 -SchemaManager requires a DataSource ({{code language="none"}}javax.sql.DataSource{{/code}}) and a list of TableInfo ({{code language="none"}}org.clazzes.jdbc2xml.schema.TableInfo{{/code}}) Objects, from which databasestructureswill be created if an"empty"databaseisdetected.Furthermore,an implementation of ISchemaEngine ({{code language="none"}}org.clazzes.jdbc2xml.schema.ISchemaEngine{{/code}})is required.16 +To function correctly, SchemaManager needs a DataSource ({{code language="none"}}javax.sql.DataSource{{/code}}) and a list of TableInfo ({{code language="none"}}org.clazzes.jdbc2xml.schema.TableInfo{{/code}}) Objects, from which a database will be created if it finds an empty database. To function properly, it also needs an implementation of ISchemaEngine ({{code language="none"}}org.clazzes.jdbc2xml.schema.ISchemaEngine{{/code}}). 23 23 24 -Optionally, a base version (default value 0.1.00) and abase description String (default "initial database schema")may be specified.18 +Optionally, you may set the base version (default value 0.1.00) and base description String (default "initial database schema"). 25 25 26 26 Database updates are passed as a Map<String, ISchemaUpdateSnippet> (org.clazzes.jdbc2xml.schema.ISchemaUpdateSnippet) - details see below. 27 27 28 28 To perform the operations, call {{code language="none"}}SchemaManager.start(){{/code}}. 29 29 30 -=== {{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets- ConfigurationusingSpringorOSGi/Blueprint"/}}Configuration using Spring or OSGi/Blueprint ===24 +=== {{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets-UsingSpringorOSGi/Blueprint"/}}Using Spring or OSGi/Blueprint === 31 31 32 32 If you are using OSGi with Blueprint or Spring to set up your project, you can configure a SchemaManager instance by adding the following to your blueprint {{code language="none"}}services.xml{{/code}} (or Spring configuration file): 33 33 ... ... @@ -39,7 +39,7 @@ 39 39 </bp:reference> 40 40 41 41 <bp:bean id="sqlDialect" factory-ref="dialectFactory" factory-method="newDialect"> 42 -<bp:argument ref="jdbcUrl"><!--beanjdbcUrlspecifiedabove -->36 +<bp:argument> <!-- Pass JDBC URL as an argument --> 43 43 </bp:argument> 44 44 </bp:bean> 45 45 ... ... @@ -51,32 +51,22 @@ 51 51 <bp:bean id="databaseSetup" class="org.clazzes.jdbc2xml.schema.SchemaManager" init-method="start"> 52 52 <bp:property name="dataSource" ref="dataSource"></bp:property> 53 53 <bp:property name="schemaEngine" ref="schemaEngine"></bp:property> 54 - <!-- optional but recommended: special name for schema history table: --> 55 - <bp:property name="versionHistoryTable" value="MYLIB_SCHEMA_HISTORY"/> 56 - <!-- optional but recommended: explicit first version --> 57 57 <bp:property name="baseVersion" value="0.1.00" /> 58 58 <bp:property name="baseTables"> 59 -<!-- List of TableDefinitions here (see below), typical: --> 60 - <!-- <bp:bean factory-ref="tableDefinitions" factory-method="getSetup" /> --> 50 +<!-- Add List of TableDefinitions here (see below) --> 61 61 </bp:property> 62 62 <bp:property name="upateSnippets"> 63 63 <!-- Add Update-Snippets here --> 64 - <!-- Example for update from 0.1.00 to 0.1.01 --> 65 - <!-- <bp:entry key="0.1.00" value="foo.schema.SchemaUpdate_0_1_01"></bp:entry> --> 66 66 </bp:property> 67 67 </bp:bean> 68 68 {{/code}} 69 69 70 -By default, JDBC2XML provides an implementation of IDialectFactory and ISchemaEngineFactory as an OSGi service or via ServiceRegistry for Spring. 58 +By default, JDBC2XML provides an implementation of IDialectFactory and ISchemaEngineFactory as an OSGi service or via ServiceRegistry lookup for Spring. 71 71 72 72 = {{id name="HowTocreateandupdateDatabasesusingSchemaManagerandSchemaUpdateSnippets-Settingupaninitialdatabaseschema"/}}Setting up an initial database schema = 73 73 74 -To create an initial database schema, SchemaManager needsa list of TableInfo objects.62 +To create an initial database schema, you will need to provide SchemaManager with a list of TableInfo objects. The recommended way to do this is to provide a class in your project which creates this list in it's constructor and provides it through a getter. You can instantiate this class in your Spring/Blueprint config as a singleton, and feed the provided List to SchemaManager. An example of this class could look like this: 75 75 76 -The recommended strategy is to implement a table definition class providing this list through a getter. 77 - 78 -This is an example: 79 - 80 80 {{code language="java"}} 81 81 package org.clazzes.example.jdbc2xml; 82 82
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -65682 51 +656821 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://clazzes.atlassian.net/wiki/spaces/JDBC2XML/pages/65682 5/How To create and update Databases using SchemaManager and SchemaUpdateSnippets1 +https://clazzes.atlassian.net/wiki/spaces/JDBC2XML/pages/656821/How To create and update Databases using SchemaManager and SchemaUpdateSnippets