Automatic Schema Generation

The automatic schema generation feature of the GlassFish Server defines
database tables based on the fields or properties in entities and
the relationships between the fields or properties. This insulates
developers from many of the database related aspects of development,
allowing them to focus on entity development. The resulting schema
is usable as-is or can be given to a database administrator for tuning
with respect to performance, security, and so on. This section covers
the following topics:

Automatic schema generation is supported on an all-or-none
basis: it expects that no tables exist in the database before it is
executed. It is not intended to be used as a tool to generate extra
tables or constraints.

Deployment won't fail if all tables
are not created, and undeployment won't fail if not all tables are
dropped. Instead, an error is written to the server log. This is done
to allow you to investigate the problem and fix it manually. You should
not rely on the partially created database schema to be correct for
running the application.

The
following options of the asadmin deploy or asadmin
deploydir command control the automatic creation of database
tables at deployment.

Table 7–1 The asadmin deploy and asadmin deploydir Generation
Options

Option

Default

Description

----createtables

none

If true, causes database tables to be created
for entities that need them. If false, does not
create tables. If not specified, the value of the eclipselink.ddl-generation property in persistence.xml is used.

----dropandcreatetables

none

If true, and if tables were automatically
created when this application was last deployed, tables from the earlier
deployment are dropped and fresh ones are created.

If true, and if tables were not automatically
created when this application was last deployed, no attempt is made
to drop any tables. If tables with the same names as those that would
have been automatically created are found, the deployment proceeds,
but a warning is thrown to indicate that tables could not be created.

If false, the eclipselink.ddl-generation property setting in persistence.xml is
overridden.

The
following options of the asadmin undeploy command
control the automatic removal of database tables at undeployment.

Table 7–2 The asadmin undeploy Generation Options

Option

Default

Description

----droptables

none

If true, causes database tables that were
automatically created when the entities were last deployed to be dropped
when the entities are undeployed. If false, does
not drop tables.

If not specified, tables are dropped only if the eclipselink.ddl-generation property setting in persistence.xml is drop-and-create-tables.

When asadmin deployment options and persistence.xml options are both specified, the asadmin deployment
options take precedence.

The Ant tasks sun-appserv-deploy and sun-appserv-undeploy are equivalent to asadmin
deploy and asadmin undeploy, respectively.
These Ant tasks also override the persistence.xml options.
For details, see Chapter 3, Using Ant with GlassFishTM Server.