C weblogic-cmp-jar.xml Deployment Descriptor Reference

The following sections describe the EJB 2.1 elements in the weblogic-cmp-jar.xml file, the WebLogic-specific XML Schema-based (XSD) deployment descriptor file. Use these definitions to create the WebLogic-specific weblogic-cmp-jar.xml file that is part of your EJB deployment. Use this deployment descriptor file to specify container-managed-persistence (CMP) behavior.

In this release of WebLogic Server, weblogic-cmp-jar.xml is XML Schema-based (XSD). In prior releases, weblogic-cmp-jar.xml was Document Type Definition-based (DTD). For backward compatibility, this release of WebLogic Server supports XSD- or DTD-based EJB descriptors. In this release of WebLogic Server, the EJB container still supports all older DTD-based descriptors; you can deploy applications that use DTD-based descriptors in this release of WebLogic Server without modifying the descriptors.

2.1 weblogic-cmp-jar.xml Deployment Descriptor File Structure

The weblogic-cmp-jar.xml file defines deployment descriptors for entity EJBs that use WebLogic Server RDBMS-based persistence services. The EJB container uses a version of weblogic-cmp-jar.xml that is different from the XML shipped with pre-9.0 releases of WebLogic Server.

You can continue to use the earlier weblogic-cmp-jar.xml DTD beans that you deploy to this release of WebLogic Server; likewise, you can continue to use the weblogic-cmp-jar.xml DTD that was supported in WebLogic Server 8.1. Though deployment descriptors are XSD-based beginning with WebLogic Server 9.0, for backward compatibility, WebLogic Server continues to support DTD-based descriptors. However, if you want to use any of the CMP 2.1 features, you must use the XSD described below.

Oracle recommends that you run DDConverter to convert EJB deployment descriptors from pre-9.0 releases of WebLogic Server to conform to the current release of WebLogic Server. DDConverter converts your DTD-based EJB deployment descriptors from pre-9.0 releases of WebLogic Server to XSD-based descriptors supported in this release.

Note:

Oracle recommends that you always convert descriptors when migrating applications to a new WebLogic Server release.

The top-level element of the WebLogic Server weblogic-cmp-jar.xml consists of a weblogic-rdbms-jar element:

allow-readonly-create-and-remove

Function

This element, introduced in WebLogic Server 8.1 SP02, is a backward compatibility flag. It is used to enable create and remove operations for an EJB that uses ReadOnly concurrency.

Prior to WebLogic Server 8.1 SP2, these operations were allowed, although they had no transactional meaning. They have been disallowed so that more efficient code can be generated for ReadOnly beans, and because using them is a bad practice.

Function

Example

check-exists-on-method

Range of values:True | False

Default value:True

Parent elements:

weblogic-rdbms-bean

Function

By default, the EJB container checks that a container-managed persistence (CMP) entity bean exists before any business method invoked on the bean completes. This means the container notifies an application as soon as any business method is invoked on a container-managed entity bean that has been removed.

To specify that the EJB container wait for transaction completion to perform the existence check, set check-exists-on-method to False. This results in high performance and still provides a sufficient level of checking for most applications.

Example

The following example specifies that WebLogic Server notify the application that a business method has been invoked on a CMP entity bean that has been removed.

<check-exists-on-method>True</check-exists-on-method>

cluster-invalidation-disabled

Range of values:true | false

Default value:false

Parent elements:

weblogic-rdbms-bean

Function

This flag, introduced in WebLogic Server 9.0, is used to disable or enable invalidation of an EJB that uses Optimistic or ReadOnly concurrency when the EJB is updated by a member of a cluster to which it is deployed. For more information, see Invalidation Options for Optimistic Concurrency in Clusters.

Example

<cluster-invalidation-disabled>true</cluster-invalidation-disabled>

cmp-field

Range of values: Valid name of field in the bean. Field must have matching cmp-entry in ejb-jar.xml. Field name is case-sensitive.

Default value: n/a

Parent elements:

weblogic-rdbms-bean
field-map

and

weblogic-rdbms-relation
field-group

Function

This name specifies the mapped field in the bean instance which should be populated with information from the database.

Example

column-map

Function

This element represents the mapping of a foreign key column in one table in the database to a corresponding primary key. The two columns may or may not be in the same table. The tables to which the columns belong are implicit from the context in which the column-map element appears in the deployment descriptor.

Example

The following is an example of the column-map element:

Note:

You do not need to specify the key-column element if the foreign-key-column refers to a remote bean.

Function

It determines whether or how WebLogic Server automatically creates a default table based on the descriptions in the deployment files and the bean class, when underlying table schema have changed.

It determines whether or how WebLogic Server automatically creates an Oracle database SEQUENCE.

Use this element only for convenience during development phases. This is because the table schema in the DBMS CREATE statement used are the EJB container's best approximation of the definition. A production environment typically requires more precise schema definition.

Automatic Table Creation

The following table describes how WebLogic Server handles automatic table creation, based on the value of create-default-dbms-tables.

Table C-1 Automatic Table Creation

Setting <create-default-dbms-tables> to this value...

Results in this behavior with respect to automatic table creation...

Disabled

The EJB container takes no action with respect to automatic table creation. This is the default value.

The container attempts to create the table based on information found in the deployment files and in the bean class. If table creation fails, a 'Table Not Found' error is thrown, and the user must create the table manually.

Function

The database-type element specifies the database used as the underlying WebLogic Server dbms or the dbms against which to execute a vendor-specific SQL statement. If you specify database-type in the weblogic-rdbms-jar element, the database you specify applies to the entire weblogic-rdbms-jar deployment descriptor file unless it is overridden in a database-specific-sql element by another database-type element.

This element has an effect only when order-database-operations is False. By default, order-database-operations is true, which causes new beans to be inserted at the transaction commit time.

Delaying the database insert until after ejbPostCreate is required when a cmr-field is mapped to a foreign-key column that does not allow null values. In this case, the cmr-field must be set to a non-null value in ejbPostCreate before the bean is inserted into the database.

For maximum flexibility, avoid creating related beans in your ejbPostCreate method. If ejbPostCreate creates related beans, and database constraints prevent related beans from referring to a bean that has not yet been created, it is not possible to perform a database insert until after the method completion.

Note:

cmr-fields may not be set during ejbCreate, before the primary key of the bean is known.

description

Function

The description element provides text that describes the parent element.

Example

<description>Contains a description of parent element</description>

disable-string-trimming

Range of values:True | False

Default value:False

Parent elements:

compatibility

Function

This element, introduced in WebLogic Server 9.0, is a compatibility flag. It is used to specify whether a cmp-field of type string[] should be trimmed. Set this flag to True to disable string trimming. For more information on string trimming, see String-Valued CMP Field Trimming and Disabling String Trimming.

Function

Example

ejb-ql-query

Range of values:

Default value:

Parent elements:

weblogic-rdbms-jar
weblogic-rdbms-bean
weblogic-query

Function

The ejb-ql-query element specifies an EJB-QL query. You should only specify EJB-QL queries that implement EJB finders or contain WebLogic-specific extensions in the weblogic-cmp-jar.xml deployment descriptor; specify queries that use only standard EJB-QL features in the ejb-jar.xml deployment descriptor.

Function

If this element is set to True, the EJB delays database operations in a transaction until commit time.

Example

The following XML sample demonstrates use of the enable-batch-operations element:

<enable-batch-operations>True</enable-batch-operations>

enable-query-caching

Range of values:True | False

Default value:True

Parent elements:

weblogic-rdbms-jar
weblogic-rdbms-bean
weblogic-query

or

weblogic-rdbms-jar
weblogic-rdbms-relation

Function

This element, introduced in WebLogic Server 9.0, controls whether read-only entity EJBs can be cached at the query level. Caching read-only entity EJBs at the query level improves performance because it enables the EJBs to be accessed in cache by any finder, thereby avoiding the need to access the database. If you set this value to True, you can specify the maximum number of queries to cache at the application or bean level. To specify the maximum number of queries to cache, set max-queries-in-cache in the weblogic-ejb-jar.xml deployment descriptor. For information, see max-queries-in-cache.

Example

The following XML sample demonstrates use of the enable-query-caching element:

<enable-query-caching>True</enable-query-caching>

field-group

Range of values: n/a

Default value: A special group named default is used for finders and relationships that have no field-group specified. The default group contains all of a bean's cmp-fields, but none of its cmr-fields.

Parent elements:

weblogic-rdbms-relation

Function

The field-group element represents a subset of the cmp-fields and cmr-fields of a bean. Related fields in a bean can be put into groups that are faulted into memory together as a unit. A group can be associated with a finder or relationship, so that when a bean is loaded as the result of executing a finder or following a relationship, only the fields specified in the group are loaded.

A field may belong to multiple groups. In this case, the getXXX method for the field faults in the first group that contains the field.

field-map

Function

The field-map element represents a mapping between a particular column in a database and a cmp-field in the bean instance.

The optional group-name element specifies a field group that is to be loaded when the getXXX method for the cmp-field is called and the EJB container needs to read the value from the DBMS because it is not in memory. If group-name is omitted, the default group, which contains all cmp-fields, is used when the cmp-field is not explicitly listed in any field groups, otherwise a field group that contains the cmp-field is chosen. Thus, developers should specify a group-name if the cmp-field is listed in multiple field groups or the container will pick one of the groups arbitrarily.

Function

Example

generator-name

Range of values:

Default value:

Parent elements:

weblogic-rdbms-bean
automatic-key-generation

Function

The generator-name element is used to specify the name of the primary key generator.

If the generator-type element is Oracle, and WebLogic Server is running in development mode, then the EJB container constructs the Oracle database SEQUENCE name by appending "_WL" to the generator-name as part of the container's automatic SEQUENCE generation feature.

Function

Example

include-result-cache-hint

Default value:False for beans that use optimistic concurrency. True for beans that use other concurrency types.

Parent elements:

weblogic-rdbms-jar
weblogic-rdbms-bean
relationship-caching

Function

When configuring a EJB CMP queries, specifies whether RESULT_CACHE hints are added to the generated SQL. If this element is set to True, the following hint is added to the generated SQL for the query:

/*+ RESULT_CACHE */

include-updates

Range of values:True | False

Default value:False for beans that use optimistic concurrency. True for beans that use other concurrency types.

Parent elements:

weblogic-rdbms-bean
weblogic-query

Function

Specifies whether updates made during the current transaction must be reflected in the result of a query. If this element is set to True, the container will flush all changes made by the current transaction to disk before executing the query. A value of False provides best performance.

instance-lock-order

Range of values:AccessOrder | ValueOrder

Default value:AccessOrder

Parent elements:

weblogic-rdbms-bean

Function

Specifies a locking or processing order for instances of a particular EJB. This element can be used to prevent deadlocks in an application that would otherwise experience deadlocks. instance-lock-order is used whenever database operations (update, for example) that apply to multiple instances of the same EJB are performed by the container. It specifies an order for operations that can cause a database lock to be acquired for a bean instance.

For example, instance-lock-order could be used to specify the order in which the EJB container calls ejbStore for instances of a particular EJB that uses database concurrency; ejbStore may acquire an exclusive lock when a database update is done. instance-lock-order also controls the order in which beans using optimistic concurrency are locked when optimistic checking is performed.

AccessOrder—The container will process beans so that locks are acquired (or upgraded) in the order in which the application originally accessed the beans during the transaction. This is the recommended value when all transactions in the system access instances of the bean, and ultimately rows in a database table, in the same order.

ValueOrder—Beans are processed in order based on the value of their primary key. ValueOrder should be specified to avoid deadlocks when concurrent transactions access instances of the same EJB in different orders.

Note:

The EJB's primary key class is not required to implement the java.lang.Comparable interface when ValueOrder is specified, although this will result in a total ordering. Beans are ordered partially using the hash code value of the primary key when the primary key does not implement java.lang.Comparable.

Example

<instance-lock-order>ValueOrder</instance-lock-order>

key-cache-size

Range of values:

Default value:1

Parent elements:

weblogic-rdbms-bean
automatic-key-generation

Function

Specifies the optional size of the primary key cache available in the automatic primary key generation feature. In addition, the EJB container uses this value to calculate the increment value for an Oracle database SEQUENCE when automatic SEQUENCE generation is enabled. See Support for Oracle Database SEQUENCE.

If generator-type is:

Oracle—key-cache-size must match the Oracle database SEQUENCE INCREMENT value. If there is a mismatch between this value and the Oracle database SEQUENCE INCREMENT value, then there will likely be duplicate key problems.

NamedSequenceTable—key-cache-size specifies how many keys the container will fetch in a single DBMS call.

Function

Example

optimistic-column

Range of values: Valid database column name

Default value: n/a

Parent elements:

weblogic-rdbms-bean
table-map

Function

The optimistic-column element denotes a database column that contains a version or timestamp value used to implement optimistic concurrency. For more information on optimistic concurrency, see Choosing a Concurrency Strategy.

Note:

Although not all databases are case sensitive, this element is case maintaining.

Example

The following sample XML shows the use of the optimistic-column element.

<optimistic-column>ROW_VERSION</optimistic-column>

where ROW_VERSION is the name of a database column that contains the value used for concurrency checking.

order-database-operations

Range of values:True | False

Default value:True

Parent elements:

weblogic-rdbms-jar

Function

This element, introduced in WebLogic Server 8.1, determines whether the EJB container delays all database operations in a transaction until commit time, automatically sorts the database dependency between the operations, and sends these operations to the database in such a way to avoid any database constraint errors.

If enable-batch-operations is set to True, the container automatically sets order-database-operations to True. To turn off order-database-operations, set both order-database-operations and enable-batch-operations to False.

See also ejb-ql-query and delay-database-insert-until.

Example

<order-database-operations>True</order-database-operations>

pass-through-columns

Range of values: Any positive integer

Default value:

Parent elements:

weblogic-rdbms-bean
sql-shape

Function

This element, introduced in WebLogic Server 9.0, specifies the number of aggregate columns that should be passed through to a SQL query result set without being mapped to anything.

Function

Example

relation-name

Range of values: Must match the ejb-relation-name of an ejb-relation in the associated ejb-jar.xml deployment descriptor file. The ejb-relation-name is optional, but is required for each relationship defined in the associated ejb-jar.xml deployment descriptor file.

Function

A CMP bean that is involved in a relationship may be mapped to multiple DBMS tables (see the table-map element for more details). If the bean on the foreign key side of a one-to-one or one-to-many relationship is mapped to multiple tables, then the name of the table containing the foreign-key columns must be specified using the foreign-key-table element.

Conversely, if the bean on the primary key side of a one-to-one or one-to-many relationship or a bean participating in a m-n relationship is mapped to multiple tables, then the name of the table containing the primary key must be specified using the primary-key-table element.

If neither of the beans in a relationship is mapped to multiple tables, then the foreign-key-table and primary-key-table elements can be omitted because the tables being used are implicit.

Example

Mapping a Bean on Foreign Key Side of a Relationship to Multiple Tables

The bean on the foreign-key side of a one-to-one relationship, Fk_Bean, is mapped to multiple tables. The table that holds the foreign key columns must be specified in the foreign-key-table element.

Fk_Bean is mapped to two tables: Fk_BeanTable_1 and Fk_BeanTable_2. The foreign key columns for the relationship are located in table Fk_BeanTable_2. The foreign key columns are named Fk_column_1 and Fk_column_2. The bean on the primary key side, Pk_Bean, is mapped to a single table with primary key columns Pk_table_pkColumn_1 and Pk_table_pkColumn_2:

The foreign-key-table element must be specified so that the container can know which table contains the foreign key columns.

Mapping a Bean on Primary Key Side of a Relationship to Multiple Tables

The bean on the primary key side of a one-to-one relationship, Pk_bean, is mapped to multiple tables, but the bean on the foreign key side of the relationship, Fk_Bean, is mapped to one table, Fk_BeanTable. The foreign key columns are named Fk_column_1 and Fk_column_2.

Pk_bean is mapped to tables:

Pk_BeanTable_1 with primary key columns Pk_table1_pkColumn_1 and Pk_table1_pkColumn_2 and

Example

serialize-byte-array-to-oracle-blob

Range of values:True | False

Default value:False

Parent elements:

weblogic-rdbms-jar
compatibility

Function

This element, introduced in WebLogic Server 8.1 SP02, is a compatibility flag. It is used to specify whether a cmp-field of type byte[] mapped to a Blob in an Oracle database should be serialized. By default, the value of the tag is false, which means that the container will persist the byte[] directly and not serialize it.

In versions prior to WebLogic Server 8.1 SP02, the default behavior was to serialize a cmp-field of type byte[] mapped to a Blob in an Oracle database. To revert to the old behavior, set the value of serialize-byte-array-to-oracle-blob to true.

Example

serialize-char-array-to-bytes

Range of values:True | False

Default value:False

Parent elements:

weblogic-rdbms-jar
compatibility

Function

This element, introduced in WebLogic Server 9.0, is a compatibility flag. It is used to specify whether a cmp-field of type char[] mapped to a byte should be serialized. By default, the value of the tag is False, which causes the EJB container to persist the char[] directly and not serialize it; If you want the EJB container to serialize the char[], set this value to True.

Example

sql

Requirements: To use database-specific SQL, you must specify the database against which to execute the SQL in the in database-type element.

Parent elements:

weblogic-rdbms-bean
weblogic-query
sql-query

and

weblogic-rdbms-bean
weblogic-query
sql-query
database-specific-query

Function

The sql element contains a standard or database-specific SQL query. You should specify queries that use only standard EJB-QL language features in the ejb-jar.xml deployment descriptor. Specify queries that contain standard SQL, database-specific SQL, or WebLogic extensions to EJB-QL in the weblogic-cmp-jar.xml deployment descriptor.

sql-query

Requirements: To use database-specific SQL, you must specify the database against which to execute the SQL in database-type.

Parent elements:

weblogic-rdbms-bean
weblogic-query

Function

The sql-query element allows you to specify standard and database-specific SQL queries. EJB-QL queries that do not take advantage of WebLogic extensions to EJB-QL should be specified in the ejb-jar.xml deployment descriptor.

Prior to WebLogic Server 9.0, only EJB-QL queries (with or without WebLogic extensions) were supported; in this release of WebLogic Server, SQL queries, EJB-QL queries (with or without WebLogic extensions), or a combination of the two are supported.

sql-select-distinct

This element is deprecated. To achieve the same functionality, use the SELECT DISTINCT clause directly in finder queries.

Function

The sql-select-distinct element controls whether the generated SQL SELECT statement will contain a a DISTINCT qualifier. Using the DISTINCT qualifier causes the database to return unique rows.

Oracle database does not allow use of a SELECT DISTINCT with a FOR UPDATE clause. Therefore, you cannot use the sql-select-distinct element if any bean in the calling chain has a method with isolation-level of TransactionReadCommittedForUpdate. You specify the transaction-isolation element in the weblogic-ejb-jar.xml.

Example

The XML example contains the element shown here:

<sql-select-distinct>True</sql-select-distinct>

sql-shape

Range of values:

Default value:

Parent elements:

weblogic-rdbms-jar
weblogic-rdbms-bean
sql-query

Function

The sql-shape element describes the data that is returned by a SQL query. Specifying sql-shape is necessary because databases do not always provide this information. Usually the sql-shape element should simply specify the database tables and columns that are being returned. For more complex queries, sql-shape should also specify the relationships that are present in the data that is returned by the database, and whether there are aggregate columns that should be passed through (should not be mapped to anything).

sql-shape-name

Function

The sql-shape-name element can be used to associate a sql-shape with multiple queries. If you have multiple queries that use the same sql-shape, you can define the shape once and use it multiple times by referencing sql-shape-name.

Example

table-map

Range of values: n/a

Default value: n/a

Requirements: Each table-map element must contain a mapping for the bean's primary key fields.

Parent elements:

weblogic-rdbms-bean

Function

A CMP bean can be mapped to one or more DBMS tables. The table-map element specifies a mapping between the cmp-fields of a bean and the columns of a table for all of the cmp-fields mapped to that table. If you map a CMP bean to multiple DBMS tables, then you must specify a table-map element for each of the tables.

When you map a CMP bean to multiple tables, each table contains a row that maps to a particular bean instance. Consequently, all tables will contain the same number of rows at any point in time. In addition, each table contains the same set of homogeneous primary key values. Therefore, each table must have the same number of primary key columns and corresponding primary key columns in different tables must have the same type, although they may have different names.

Each table-map element must specify a mapping from the primary key column(s) for a particular table to the primary key field(s) of the bean. You can only map non-primary key fields to a single table.

table-name

Range of values: Valid, fully qualified SQL name of the source table in the database.

Default value:

Requirements:table-name must be set in all cases.

Parent elements:

weblogic-rdbms-bean
weblogic-rdbms-relation

Function

The fully-qualified SQL name of the table. The user defined for the data-source for this bean must have read and write privileges for this table, but does not necessarily need schema modification privileges.

trigger-updates-optimistic-column

Range of values:True | False

Default value:False

Parent elements:

weblogic-rdbms-bean
table-map

Function

The trigger-updates-optimistic-column element, introduced in WebLogic Server 9.0, indicates whether you want the EJB container to automatically update the database column value specified in optimistic-column that is used for concurrency checking. By default, the value of trigger-updates-optimistic-column is False, and the EJB container automatically updates the database column specified in optimistic-column whenever it sends SQL UPDATE statements to JDBC. If you have legacy applications that use database triggers to update the version values whenever the legacy application updates a database row and you do not want the EJB container to automatically update version values, set the value of this element to True.

Note:

If you set trigger-updates-optimistic-column to True, you must also ensure that your database triggers initialize the version column in the database when the bean is created.

Example

unknown-primary-key-field

Range of values: A valid datatype

Default value: n/a

Parent elements:

weblogic-rdbms-bean

Function

The unknown-primary-key-field element allows you to specify which of your cmp fields should be used as the primary key when the primary key is not specified in the ejb-jar.xml descriptor. The specified primary key field must be mapped to a database column using the field-map element. If the specified primary key field was not declared as a cmp field in the ejb-jar.xml descriptor, automatic key generation must be enabled and the primary key type will be java.lang.Long.

Example

use-select-for-update

Range of values:True | False

Default value:False

Parent elements:

weblogic-rdbms-bean

Function

Enforces pessimistic concurrency on a per-bean basis. Specifying True causes SELECT ... FOR UPDATE to be used whenever the bean is loaded from the database. This is different from the transaction isolation level of TransactionReadCommittedForUpdate in that this is set at the bean level rather than the transaction level.

Note:

When using a pessimistic locking strategy (for example, HOLDLOCK) with Sybase JConnect drivers, you must specify SELECT_OPENS_CURSOR=true to generate a cursor when the query contains a FOR UPDATE clause.

validate-db-schema-with

Function

The validate-db-schema-with element specifies that container-managed persistence checks that beans have been mapped to a valid database schema during deployment.

If you specify MetaData WebLogic Server uses the JDBC metadata to validate the schema.

If you specify TableQuery, the default setting, WebLogic Server queries the tables directly to verify that they have the schema expected by CMP runtime.

Example

An example of the validate-db-schema-with element is shown here:

<validate-db-schema-with>TableQuery</validate-db-schema-with>

verify-columns

Range of values:Read | Modified | Version | Timestamp

Default value:none

Requirements:table-name must be set in all cases.

Parent elements:

weblogic-rdbms-bean
table-map

Function

The verify-columns element specifies the columns in a table that you want WebLogic Server to check for validity when you use the optimistic concurrency strategy. WebLogic Server checks columns at the end of a transaction, before committing it to the database, to make sure that no other transaction has modified the data.

Example

verify-rows

Function

The verify-rows element specifies the rows in a table that the EJB container should check when optimistic concurrency is used.

Modified— only rows that are updated or deleted by a transaction are checked. This value ensures that two transactions do not update the same row concurrently, resulting in a lost update, but allows reads and updates of different transactions to be interleaved. This results in a level of consistency that falls between the ANSI READ_COMMITTED and REPEATABLE_READ levels of consistency.

Read—specifies that any row that is read by the transaction should be checked. This includes both rows that are simply read and rows that are read and then updated or deleted by the transaction. Specifying a value of Read results in additional overhead since it generally increases the amount of optimistic checking the EJB container must perform. With the Read option, committed transactions read a set of rows that are guaranteed not to be modified by another transaction until after the transaction commits.This results in a high level of consistency which is very close to the ANSI definition of SERIALIZABLE consistency.

Note:

If verify-rows is set to Read then the verify-columns element cannot have a value of Modified, as this combination would result in the EJB container checking only the modified rows.

Example

<verify-rows>Modified</verify-rows>

version-column-initial-value

Range of values:0 or any positive integer

Default value: n/a

Parent elements:

weblogic-rdbms-bean
table-map

Function

The version-column-initial-value element, introduced in WebLogic Server 9.0, specifies the initial value of the version column used to implement optimistic concurrency. The version column is the database column you specify in the optimistic-column element. For more information, see optimistic-column.

Example

weblogic-ql

Range of values:

Default value:

Parent elements:

weblogic-rdbms-bean
weblogic-query

Function

The weblogic-ql element specifies a query that contains a WebLogic specific extension to the ejb-ql language. You should specify queries that only use standard EJB-QL language features in the ejb-jar.xml deployment descriptor.

Example

weblogic-query

Range of values: n/a

Default value: n/a

Parent elements:

weblogic-rdbms-bean

Function

The weblogic-query element allows you to specify queries that use standard or database-specific SQL or WebLogic-specific extensions to EJB-QL. Queries that do not take advantage of SQL or WebLogic extensions to EJB-QL should be specified in the ejb-jar.xml deployment descriptor.

The weblogic-query element is also used to associate a field-group with the query if the query retrieves an entity bean that should be pre-loaded into the cache by the query.

weblogic-rdbms-jar

This section describes and provides an example of the weblogic-rdbms-jar element.

Function

The weblogic-rdbms-jar element is the root level element of a WebLogic RDBMS CMP deployment descriptor. This element contains the deployment information for one or more entity beans and an optional set of relations.

Example

weblogic-rdbms-relation

Range of values: n/a

Default value: n/a

Parent elements:

weblogic-rdbms-jar

Function

The weblogic-rdbms-relation element represents a single relationship that is managed by the WebLogic CMP persistence type. deployment descriptor. WebLogic Server supports the following three relationship mappings:

For one-to-one relationships, the mapping is from a foreign key in one bean to the primary key of the other bean.

For one-to-many relationships, the mapping is also from a foreign key in one bean to the primary key of another bean.

For many-to-many relationships, the mapping involves a join table. Each row in the join table contains two foreign keys that map to the primary keys of the entities involved in the relationship.

Examples

See the following sections for examples of how one-to-one, one-to-many, and many-to-many relationships are configured.

Defining a One-to-One Relationship

Example C-6 shows the weblogic-rdbms-bean element that defines a one-to-one relationship between the entities defined in Example C-4 and Example C-5. The weblogic-rdbms-relation element is in the weblogic-cmp-jar.xml file, after the weblogic-rdbms-bean elements.

<relationship-role-name> contains the relation field specified in <cmr-field> in the <ejb-relationship-role> element in ejb-jar.xml.

<foreign-key-column> must specify the column in the table on the "many" side of the relationship.

Defining a Many-to-Many Relationship

A WebLogic Server many-to-many relationship involves the physical mapping of a join table. Each row in the join table contains two foreign keys that maps to the primary keys of the entities involved in the relationship.

The following example shows a many-to-many relationship between the FRIENDS bean and the EMPLOYEES bean.

In Figure C-0, the FRIENDS join table has two columns, called first-friend-id and second-friend-id. Each column contains a foreign key that designates a particular employee who is a friend of another employee. The primary key column (key-column) of the EMPLOYEES table is id. For this example, assume that the EMPLOYEES bean is mapped to a single table. If the EMPLOYEES bean is mapped to multiple tables, then the table containing the primary key column (key-column) must be specified in the relationship-role-map. For more information, see relationship-role-map.

weblogic-relationship-role

Range of values: n/a

Default value: n/a

Parent elements:

weblogic-rdbms-jar
weblogic-rdbms-relation

Function

The weblogic-relationship-role element specifies the following DBMS schema information for an ejb-relationship-role specified in ejb-jar.xml:

The relationship-role-map sub-element specifies the mapping between a foreign key and a primary key, for one side of a relationship. For a 1-1 or 1-n relationship, only the role on the foreign-key side of the relationship specifies a mapping. Both roles specify a mapping for a m-m relationship. For details and examples, see relationship-role-map.

A group-name can be used to indicate the field-group to be loaded when the bean corresponding to the role is loaded as a result of traversing the relationship, i.e. calling a cmr getXXX method.

The db-cascade-delete tag can to used to specify that cascade deletes use the built-in cascade delete facilities of the underlying DBMS. For more information, see db-cascade-delete.