JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle GlassFish Server 3.1 Application Development Guide
search filter icon
search icon

Document Information

Preface

Part I Development Tasks and Tools

1.  Setting Up a Development Environment

2.  Class Loaders

3.  Debugging Applications

Part II Developing Applications and Application Components

4.  Securing Applications

5.  Developing Web Services

6.  Using the Java Persistence API

7.  Developing Web Applications

8.  Using Enterprise JavaBeans Technology

9.  Using Container-Managed Persistence

GlassFish Server Support for CMP

CMP Mapping

Mapping Capabilities

The Mapping Deployment Descriptor File

Mapping Considerations

Join Tables and Relationships

Automatic Primary Key Generation

Fixed Length CHAR Primary Keys

Managed Fields

BLOB Support

CLOB Support

Automatic Schema Generation for CMP

Supported Data Types for CMP

Generation Options for CMP

Schema Capture

Automatic Database Schema Capture

Using the capture-schema Utility

Configuring the CMP Resource

Performance-Related Features

Version Column Consistency Checking

To Use Version Consistency

Relationship Prefetching

Read-Only Beans

Default Fetch Group Flags

Configuring Queries for 1.1 Finders

About JDOQL Queries

Query Filter Expression

Query Parameters

Query Variables

JDOQL Examples

Example 1

Example 2

Example 3

CMP Restrictions and Optimizations

Disabling ORDER BY Validation

Setting the Heap Size on DB2

Eager Loading of Field State

Restrictions on Remote Interfaces

PostgreSQL Case Insensitivity

No Support for lock-when-loaded on Sybase

Sybase Finder Limitation

Date and Time Fields

Set RECURSIVE_TRIGGERS to false on MSSQL

MySQL Database Restrictions

10.  Developing Java Clients

11.  Developing Connectors

12.  Developing Lifecycle Listeners

13.  Developing OSGi-enabled Java EE Applications

Part III Using Services and APIs

14.  Using the JDBC API for Database Access

15.  Using the Transaction Service

16.  Using the Java Naming and Directory Interface

17.  Using the Java Message Service

18.  Using the JavaMail API

Index

Automatic Schema Generation for CMP

The automatic schema generation feature provided in the GlassFish Server defines database tables based on the fields in entity beans and the relationships between the fields. This insulates developers from many of the database related aspects of development, allowing them to focus on entity bean 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.

The following topics are addressed here:


Note - 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. 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.


Supported Data Types for CMP

CMP supports a set of JDBC data types that are used in mapping Java data fields to SQL types. Supported JDBC data types are as follows: BIGINT, BIT, BLOB, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, NUMERIC, REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARCHAR.

The following table contains the mappings of Java types to JDBC types when automatic mapping is used.

Table 9-1 Java Type to JDBC Type Mappings for CMP

Java Type
JDBC Type
Nullability
boolean
BIT
No
java.lang.Boolean
BIT
Yes
byte
TINYINT
No
java.lang.Byte
TINYINT
Yes
double
DOUBLE
No
java.lang.Double
DOUBLE
Yes
float
REAL
No
java.lang.Float
REAL
Yes
int
INTEGER
No
java.lang.Integer
INTEGER
Yes
long
BIGINT
No
java.lang.Long
BIGINT
Yes
short
SMALLINT
No
java.lang.Short
SMALLINT
Yes
java.math.BigDecimal
DECIMAL
Yes
java.math.BigInteger
DECIMAL
Yes
char
CHAR
No
java.lang.Character
CHAR
Yes
java.lang.String
VARCHAR or CLOB
Yes
Serializable
BLOB
Yes
byte[]
BLOB
Yes
java.util.Date
DATE (Oracle only)

TIMESTAMP (all other databases)

Yes
java.sql.Date
DATE
Yes
java.sql.Time
TIME
Yes
java.sql.Timestamp
TIMESTAMP
Yes

Note - Java types assigned to CMP fields must be restricted to Java primitive types, Java Serializable types, java.util.Date, java.sql.Date, java.sql.Time, or java.sql.Timestamp. An entity bean local interface type (or a collection of such) can be the type of a CMR field.


The following table contains the mappings of JDBC types to database vendor-specific types when automatic mapping is used. For a list of the JDBC drivers currently supported by the GlassFish Server, see the Oracle GlassFish Server 3.1-3.1.1 Release Notes. For configurations of supported and other drivers, see Configuration Specifics for JDBC Drivers in Oracle GlassFish Server 3.1 Administration Guide.

Table 9-2 Mappings of JDBC Types to Database Vendor Specific Types for CMP

JDBC Type
Java DB, Derby, CloudScape
Oracle
DB2
Sybase ASE 12.5
MS-SQL Server
BIT
SMALLINT
SMALLINT
SMALLINT
TINYINT
BIT
TINYINT
SMALLINT
SMALLINT
SMALLINT
TINYINT
TINYINT
SMALLINT
SMALLINT
SMALLINT
SMALLINT
SMALLINT
SMALLINT
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
BIGINT
BIGINT
NUMBER
BIGINT
NUMERIC
NUMERIC
REAL
REAL
REAL
FLOAT
FLOAT
REAL
DOUBLE
DOUBLE PRECISION
DOUBLE PRECISION
DOUBLE
DOUBLE PRECISION
FLOAT
DECIMAL(p,s)
DECIMAL(p,s)
NUMBER(p,s)
DECIMAL(p,s)
DECIMAL(p,s)
DECIMAL(p,s)
VARCHAR
VARCHAR
VARCHAR2
VARCHAR
VARCHAR
VARCHAR
DATE
DATE
DATE
DATE
DATETIME
DATETIME
TIME
TIME
DATE
TIME
DATETIME
DATETIME
TIMESTAMP
TIMESTAMP
TIMESTAMP(9)
TIMESTAMP
DATETIME
DATETIME
BLOB
BLOB
BLOB
BLOB
IMAGE
IMAGE
CLOB
CLOB
CLOB
CLOB
TEXT
NTEXT

Generation Options for CMP

Deployment descriptor elements or asadmin command line options can control automatic schema generation by the following:


Note - Before using these options, make sure you have a properly configured CMP resource. See Configuring the CMP Resource.

For a read-only bean, do not create the database schema during deployment. Instead, work with your database administrator to populate the data into the tables. See Using Read-Only Beans.

Automatic schema generation is not supported for beans with version column consistency checking. Instead, work with your database administrator to create the schema and add the required triggers. See Version Column Consistency Checking.


The following optional data subelements of the cmp-resource element in the glassfish-ejb-jar.xml file control the automatic creation of database tables at deployment. For more information about the cmp-resource element, see cmp-resource in Oracle GlassFish Server 3.1 Application Deployment Guide and Configuring the CMP Resource.

Table 9-3 The glassfish-ejb-jar.xml Generation Elements

Element
Default
Description
false
If true, causes database tables to be created for beans that are automatically mapped by the EJB container. No unique constraints are created. If false, does not create tables.
false
If true, causes database tables that were automatically created when the bean(s) were last deployed to be dropped when the bean(s) are undeployed. If false, does not drop tables.
none
Specifies the name of the database vendor for which tables are created. Allowed values are javadb, db2, mssql, mysql, oracle, postgresql, pointbase, derby (also for CloudScape), and sybase, case-insensitive.

If no value is specified, a connection is made to the resource specified by the jndi-name subelement of the cmp-resource element in the glassfish-ejb-jar.xml file, and the database vendor name is read. If the connection cannot be established, or if the value is not recognized, SQL-92 compliance is presumed.

none
Specifies field-specific column attributes in property subelements. Each property name is of the following format:

bean-name.field-name.attribute

For example:

Employee.firstName.jdbc-type

Also allows you to set the use-unique-table-names property. If true, this property specifies that generated table names are unique within each GlassFish Server domain. The default is false.

For further information and an example, see schema-generator-properties in Oracle GlassFish Server 3.1 Application Deployment Guide.

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

Table 9-4 The asadmin deploy and asadmin deploydir Generation Options for CMP

Option
Default
Description
--createtables
none
If true, causes database tables to be created for beans that need them. No unique constraints are created. If false, does not create tables. If not specified, the value of the create-tables-at-deploy attribute in glassfish-ejb-jar.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 indicates that tables could not be created.

If false, settings of create-tables-at-deploy or drop-tables-at-undeploy in the glassfish-ejb-jar.xml file are overridden.

--uniquetablenames
none
If true, specifies that table names are unique within each GlassFish Server domain. If not specified, the value of the use-unique-table-names property in glassfish-ejb-jar.xml is used.
--dbvendorname
none
Specifies the name of the database vendor for which tables are created. Allowed values are javadb, db2, mssql, oracle, postgresql, pointbase, derby (also for CloudScape), and sybase, case-insensitive.

If not specified, the value of the database-vendor-name attribute in glassfish-ejb-jar.xml is used.

If no value is specified, a connection is made to the resource specified by the jndi-name subelement of the cmp-resource element in the glassfish-ejb-jar.xml file, and the database vendor name is read. If the connection cannot be established, or if the value is not recognized, SQL-92 compliance is presumed.

If one or more of the beans in the module are manually mapped and you use any of the asadmin deploy or asadmin deploydir options, the deployment is not harmed in any way, but the options have no effect, and a warning is written to the server log.

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

Table 9-5 The asadmin undeploy Generation Options for CMP

Option
Default
Description
--droptables
none
If true, causes database tables that were automatically created when the bean(s) were last deployed to be dropped when the bean(s) are undeployed. If false, does not drop tables.

If not specified, the value of the drop-tables-at-undeploy attribute in glassfish-ejb-jar.xml is used.

For more information about the asadmin deploy, asadmin deploydir, and asadmin undeploy commands, see the Oracle GlassFish Server 3.1-3.1.1 Reference Manual.

When command line and glassfish-ejb-jar.xml options are both specified, the asadmin options take precedence.