Class PersistenceUnitProperties

java.lang.Object
org.eclipse.persistence.config.PersistenceUnitProperties

public class PersistenceUnitProperties extends Object
The class defines EclipseLink persistence unit property names. These values are used to assist in the configuration of properties passed to Persistence.createEntityManagerFactory(String, Map) which override the values specified in the persistence.xml file.

Usage Example:

Map<String, Object> props = new HashMap<String, Object>();

 props.put(PersistenceUnitProperties.JDBC_USER, "user-name");
 props.put(PersistenceUnitProperties.JDBC_PASSWORD, "password");

 EntityManagerFactory emf = Persistence.createEntityManagerFactory("pu-name", props);

Property values are usually case-insensitive with some common sense exceptions, for instance class names.

See Also:
  • Field Details

    • TRANSACTION_TYPE

      public static final String TRANSACTION_TYPE
      The "jakarta.persistence.transactionType" property specifies the transaction type for the persistence unit. This property overrides the value specified in the persistence.xml.

      Allowed Values (case sensitive string):

      • "JTA"
      • "RESOURCE_LOCAL"
      See Also:
    • JTA_DATASOURCE

      public static final String JTA_DATASOURCE
      The "jakarta.persistence.jtaDataSource" property specifies the JTA data source name that will look up a valid DataSource. This property is used to override the value specified in the persistence.xml.

      Allowed Values:

      • a well formed JNDI resource name that can locate the data source in the target container
      • an instance of DataSource.
      See Also:
    • NON_JTA_DATASOURCE

      public static final String NON_JTA_DATASOURCE
      The "jakarta.persistence.nonJtaDataSource" property specifies the non-JTA data source name that will look up a valid DataSource. This can be used to override the value specified in the persistence.xml.

      Allowed Values:

      • a well formed JNDI resource name that can locate the data source in the target container
      • an instance of DataSource
      See Also:
    • JDBC_DRIVER

      public static final String JDBC_DRIVER
      The "jakarta.persistence.jdbc.driver" property specifies the JDBC DriverManager class name used for internal connection pooling when a data source is not being used.

      Allowed Values:

      • the fully qualified name for a class that implements Driver interface

      Persistence XML example:

       <property name="jakarta.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

      The previous value for this property "eclipselink.jdbc.driver" is now deprecated and should be replaced with this new name.

      See Also:
    • JDBC_URL

      public static final String JDBC_URL
      The "jakarta.persistence.jdbc.url" property specifies the JDBC URL used for internal connection pooling when a data source is not being used.

      Allowed Values:

      • a string which represents a valid URL for the specified JDBC driver

      Persistence XML example:

       <property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost/mysql" />

      The previous value for this property "eclipselink.jdbc.url" is now deprecated and should be replaced with this new name.

      See Also:
    • JDBC_USER

      public static final String JDBC_USER
      The "jakarta.persistence.jdbc.user" property specifies the data source or JDBC user name.

      Persistence XML example:

       <property name="jakarta.persistence.jdbc.user" value="user-name" />

      The previous value for this property "eclipselink.jdbc.user" is now deprecated and should be replaced with this new name.

      See Also:
    • JDBC_PASSWORD

      public static final String JDBC_PASSWORD
      The "jakarta.persistence.jdbc.password" property specifies the data source or JDBC password.

      Persistence XML example:

       <property name="jakarta.persistence.jdbc.password" value="password" />

      The previous value for this property "eclipselink.jdbc.password" is now deprecated and should be replaced with this new name.

      See Also:
    • NATIVE_SQL

      public static final String NATIVE_SQL
      The "eclipselink.jdbc.native-sql" property specifies whether generic SQL should be used or platform specific 'native' SQL. The platform specific SQL customizes join syntax, date operators, sequencing, ...

      Allowed Values (String):

      • "false" (DEFAULT) - use generic SQL
      • "true" - use database specific SQL
      See Also:
    • SQL_CAST

      public static final String SQL_CAST
      The "eclipselink.jdbc.sql-cast" property specifies if platform specific CAST SQL operations should be used. Casting is normally not required, and can cause issues when used.

      Allowed Values (String):

      • "false" (DEFAULT) - disable platform specific cast
      • "true" - enable platform specific cast
      See Also:
    • JPQL_PARSER

      public static final String JPQL_PARSER
      The "eclipselink.jpql.parser" property allows the JPQL parser to be configured.

      Allowed Values (String):

      • "org.eclipse.persistence.internal.jpa.jpql.HermesParser" (DEFAULT) - new parser as of EclipseLink 2.4, provides extended JPQL support.
      • "org.eclipse.persistence.queries.ANTLRQueryBuilder" - old parser used previous to EclipseLink 2.4, can be used for backward compatibility.
      See Also:
    • JPQL_VALIDATION

      public static final String JPQL_VALIDATION
      The "eclipselink.jpql.validation" property allows the JPQL parser validation level to be configured.

      This setting is only supported in the Hermes parser.

      Allowed Values (String):

      • "EclipseLink" (DEFAULT) - allows EclipseLink JPQL extensions.
      • "JPA 1.0" - only allows valid JPA 1.0 JPQL.
      • "JPA 2.0" - only allows valid JPA 2.0 JPQL.
      • "JPA 2.1" - only allows valid JPA 2.1 JPQL.
      • "None" - no JPQL validation is done.
      See Also:
    • CONNECTION_POOL_WAIT

      public static final String CONNECTION_POOL_WAIT
      The "wait" property.
      This can be append to any connection pool property, i.e. "eclipselink.jdbc.connection_pool.default.wait" which specifies the timeout time in milliseconds (ms) that will be waited for an available connection before an exception is thrown.

      Ignored in case external connection pools are used.

      Default: 180000 ms (3 minutes).

      Allowed Values:

      • a string containing a positive integer value. A value of 0 means wait forever.
      See Also:
    • CONNECTION_POOL_MAX

      public static final String CONNECTION_POOL_MAX
      The "max" property.
      This can be append to any connection pool property, i.e. "eclipselink.jdbc.connection_pool.default.max".
      Specifies the maximum number of read connection in the internal connection pool. If the maximum size is reached, threads requiring a connection will wait until one is released back to the pool. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • CONNECTION_POOL_MIN

      public static final String CONNECTION_POOL_MIN
      The "min" property.
      This can be append to any connection pool property, i.e. "eclipselink.jdbc.connection_pool.default.min".
      Specifies the minimum number of connections in EclipseLink connection pool. Connections beyond the minimum will be disconnected when returned to the pool, so this should normally be equal to the number of active threads, or server's thread pool size. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • CONNECTION_POOL_INITIAL

      public static final String CONNECTION_POOL_INITIAL
      The "initial" property.
      This can be append to any connection pool property, i.e. "eclipselink.jdbc.connection_pool.default.initial" EclipseLink JDBC (internal) connection pools properties. Initial number of connections in EclipseLink connection pool. This is the number of connections connected at startup. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • CONNECTION_POOL_SHARED

      public static final String CONNECTION_POOL_SHARED
      The "shared" property.
      This can be append to the read connection pool, i.e. "eclipselink.jdbc.connection_pool.read.shared".
      Configures whether connections in EclipseLink read connection pool should be shared (not exclusive). Connection sharing means the same JDBC connection will be used concurrently for multiple reading threads.

      This property is ignored in case external connection pools are used.

      Allowed Values (String):

      • "false" (DEFAULT) - indicates read connections will not be shared
      • "true" - indicates read connections can be shared
      See Also:
    • CONNECTION_POOL_URL

      public static final String CONNECTION_POOL_URL
      The "url" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.url".
      Configures the JDBC url to use for the connection pool. Only required if different than the default.
      See Also:
    • CONNECTION_POOL_JTA_DATA_SOURCE

      public static final String CONNECTION_POOL_JTA_DATA_SOURCE
      The "jtaDataSource" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.jtaDataSource".
      Configures the JTA DataSource name to use for the connection pool. Only required if different than the default.
      See Also:
    • CONNECTION_POOL_NON_JTA_DATA_SOURCE

      public static final String CONNECTION_POOL_NON_JTA_DATA_SOURCE
      The "nonJtaDataSource" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.nonJtaDataSource".
      Configures the non JTA DataSource name to use for the connection pool. Only required if different than the default.
      See Also:
    • CONNECTION_POOL_USER

      public static final String CONNECTION_POOL_USER
      The "user" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.user".
      Configures the user name to use for the connection pool. Only required if different than the default.
      See Also:
    • CONNECTION_POOL_PASSWORD

      public static final String CONNECTION_POOL_PASSWORD
      The "password" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.password".
      Configures the password to use for the connection pool. Only required if different than the default.
      See Also:
    • CONNECTION_POOL_FAILOVER

      public static final String CONNECTION_POOL_FAILOVER
      The "failover" property.
      This can be append to a connection pool property, i.e. "eclipselink.jdbc.connection_pool.node1.failover".
      Configures the connection pool(s) to fail-over to if this connection pool fails. A comma separate list is allowed if multiple failover pools are required.
      See Also:
    • CONNECTION_POOL

      public static final String CONNECTION_POOL
      Allow configuring a "eclipselink.connection-pool." properties. The name of the connection pool must be appended to configure the pool, if no name is appended the default (write) pool is configured. The name of the property to configure must also be appended.

      A user defined connection pool can be configured or one of the following system pools:

      • "read" - pool used for non-transactional read queries, (defaults to default pool if not specified).
      • "default", "write", "" - default pool used for writing and reads if no read pool configured.
      • "sequence" - pool used for sequencing, (default pool/write connection used if not specified).

      A user defined pool is only used if specified in the EntityManager properties or ClientSession ConnectionPolicy, or if partitioning is used.

      The following connection pool properties can be configured:

      • "initial" - number of initial connections.
      • "min" - minimum number of connections.
      • "max" - maximum number of connections.
      • "wait" - amount of time to wait for a connection from the pool.
      • "url" - JDBC URL for the connection.
      • "shared" - only for the read connection pool, shares read connections across threads.
      • "jtaDataSource" - JTA DataSource name to use for the connection, if different than the default.
      • "nonJtaDataSource" - non JTA DataSource name to use for the connection, if different than the default.
      • "user" - user to use for the connection, if different than the default.
      • "password" - password to use for the connection, if different than the default.

      Persistence XML example:

       <property name="eclipselink.connection-pool.node2.min" value="16"/>
        <property name="eclipselink.connection-pool.node2.max" value="16"/>
        <property name="eclipselink.connection-pool.node2.url" value="jdbc:oracle:thin:@node2:1521:orcl"/>
      See Also:
    • CONNECTION_POOL_READ

      public static final String CONNECTION_POOL_READ
      Allow configuring the "eclipselink.connection-pool.read." properties. The read connection pool is used for non-transaction read queries. By default a separate read connection pool is not used, and the default pool is used for read queries.

      One of the following connection pool properties must be appended.

      • "initial" - number of initial connections.
      • "min" - minimum number of connections.
      • "max" - maximum number of connections.
      • "wait" - amount of time to wait for a connection from the pool.
      • "url" - JDBC URL for the connection.
      • "shared" - only for the read connection pool, shares read connections across threads.
      • "jtaDataSource" - JTA DataSource name to use for the connection, if different than the default.
      • "nonJtaDataSource" - non JTA DataSource name to use for the connection, if different than the default.
      • "user" - user to use for the connection, if different than the default.
      • "password" - password to use for the connection, if different than the default.

      Persistence XML example:

       <property name="eclipselink.connection-pool.read.min" value="8"/>
        <property name="eclipselink.connection-pool.read.max" value="32"/>
        <property name="eclipselink.connection-pool.read.nonJtaDataSource" value="jdbc/readDataSource"/>
      See Also:
    • CONNECTION_POOL_SEQUENCE

      public static final String CONNECTION_POOL_SEQUENCE
      Allow configuring the "eclipselink.connection-pool.sequence." properties. The sequence connection pool is used to allocate generated Ids. This is only required for TABLE sequencing.

      By default a separate sequence connection pool is not used, and the default pool is used for sequencing.

      One of the following connection pool properties must be appended.

      • "initial" - number of initial connections.
      • "min" - minimum number of connections.
      • "max" - maximum number of connections.
      • "wait" - amount of time to wait for a connection from the pool.
      • "url" - JDBC URL for the connection.
      • "jtaDataSource" - JTA DataSource name to use for the connection, if different than the default.
      • "nonJtaDataSource" - non JTA DataSource name to use for the connection, if different than the default.
      • "user" - user to use for the connection, if different than the default.
      • "password" - password to use for the connection, if different than the default.

      Persistence XML example:

       <property name="eclipselink.connection-pool.sequence.min" value="1"/>
        <property name="eclipselink.connection-pool.sequence.max" value="1"/>
        <property name="eclipselink.connection-pool.sequence.nonJtaDataSource" value="jdbc/sequenceDataSource"/>
      See Also:
    • CONNECTION_POOL_INTERNALLY_POOL_DATASOURCE

      public static final String CONNECTION_POOL_INTERNALLY_POOL_DATASOURCE
      Tell EclipseLink to use it's internal connection pool to pool connections from a datasource.

      This property is useful when using EclipseLink with Gemini JPA because it internally wraps local database information in a datasource.

      Allowed Values (String):

      • "false" (DEFAULT)
      • "true"
      See Also:
    • JDBC_CONNECTIONS_WAIT

      @Deprecated public static final String JDBC_CONNECTIONS_WAIT
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_WAIT
      The "eclipselink.jdbc.connections.wait-timeout" property which specifies the timeout time in milliseconds (ms) that will be waited for an available connection before an exception is thrown.

      Ignored in case external connection pools are used.

      Default: 180000 ms (3 minutes).

      Allowed Values:

      • a string containing a positive integer value. A value of 0 means wait forever.
      See Also:
    • JDBC_CONNECTIONS_MAX

      @Deprecated public static final String JDBC_CONNECTIONS_MAX
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
      The "eclipselink.jdbc.connections.max" property specifies the maximum number of read connection in the internal connection pool. If the maximum size is reached, threads requiring a connection will wait until one is released back to the pool. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • JDBC_CONNECTIONS_MIN

      @Deprecated public static final String JDBC_CONNECTIONS_MIN
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
      The "eclipselink.jdbc.connections.min" property specifies the minimum number of connections in EclipseLink connection pool. Connections beyond the minimum will be disconnected when returned to the pool, so this should normally be equal to the number of active threads, or server's thread pool size. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • JDBC_CONNECTIONS_INITIAL

      @Deprecated public static final String JDBC_CONNECTIONS_INITIAL
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
      The "eclipselink.jdbc.connections.initial" property EclipseLink JDBC (internal) connection pools properties. Initial number of connections in EclipseLink connection pool. This is the number of connections connected at startup. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • JDBC_WRITE_CONNECTIONS_MAX

      @Deprecated public static final String JDBC_WRITE_CONNECTIONS_MAX
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
      The "eclipselink.jdbc.write-connections.max" property specifies the maximum number of connections supported in the internal write connection pool. Maximum number of connections in EclipseLink write connection pool. If the maximum size is reached, threads requiring a connection will wait until one is released back to the pool. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • JDBC_WRITE_CONNECTIONS_MIN

      @Deprecated public static final String JDBC_WRITE_CONNECTIONS_MIN
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
      The "eclipselink.jdbc.write-connections.min" property specifies the minimum number of connections in the internal write connection pool. Connections beyond the minimum will be disconnected when returned to the pool, so this should normally be equal to the number of active threads, or server's thread pool size. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      Ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a positive integer value
      See Also:
    • JDBC_WRITE_CONNECTIONS_INITIAL

      @Deprecated public static final String JDBC_WRITE_CONNECTIONS_INITIAL
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
      The "eclipselink.jdbc.write-connections.initial" property configures the number of connections connected at created at startup in the write connection pool. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      This property is ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a zero or greater integer value
      See Also:
    • JDBC_READ_CONNECTIONS_MAX

      @Deprecated public static final String JDBC_READ_CONNECTIONS_MAX
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
      The "eclipselink.jdbc.read-connections.max" property configures the maximum number of connections in the read connection pool. If the maximum size is reached, threads requiring a connection will wait until one is released back to the pool (unless shared). By default a separate read connection pool is not used. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      This property is ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a zero or greater integer value

      See:

      See Also:
    • JDBC_READ_CONNECTIONS_MIN

      @Deprecated public static final String JDBC_READ_CONNECTIONS_MIN
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
      The "eclipselink.jdbc.read-connections.min" property configures the minimum number of connections in read connection pool. Connections beyond the minimum will be disconnected when returned to the pool, so this should normally be equal to the number of active threads, or server's thread pool size. By default a separate read connection pool is not used. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      This property is ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a zero or greater integer value
      See Also:
    • JDBC_READ_CONNECTIONS_INITIAL

      @Deprecated public static final String JDBC_READ_CONNECTIONS_INITIAL
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
      The "eclipselink.jdbc.read-connections.initial" property configures the number of connections connected at created at startup in the read connection pool. By default a single shared (exclusive) read/write pool is used with min/max 32 connections and 1 initial.

      This property is ignored in case external connection pools are used.

      Allowed Values:

      • a string containing a zero or greater integer value
      See Also:
    • JDBC_READ_CONNECTIONS_SHARED

      @Deprecated public static final String JDBC_READ_CONNECTIONS_SHARED
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_SHARED
      The "eclipselink.jdbc.read-connections.shared" property configures whether connections in EclipseLink read connection pool should be shared (not exclusive). Connection sharing means the same JDBC connection will be used concurrently for multiple reading threads.

      This property is ignored in case external connection pools are used.

      Allowed Values:

      • "false" (DEFAULT) - indicates read connections will not be shared
      • "true" - indicates read connections can be shared
      See Also:
    • JDBC_SEQUENCE_CONNECTION_POOL_MAX

      @Deprecated public static final String JDBC_SEQUENCE_CONNECTION_POOL_MAX
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
      The "eclipselink.jdbc.sequence-connection-pool.max" property configures the maximum number of connections in the sequence connection pool. If the maximum size is reached, threads requiring a connection will wait until one is released back to the pool.

      By default a separate sequence connection pool is not used (the sequence is allocated on the write connection).

      This property is ignored in case external connection pools are used.

      Default: 2

      Allowed Values:

      • a string containing a zero or greater integer value.

      See:

      See Also:
    • JDBC_SEQUENCE_CONNECTION_POOL_MIN

      @Deprecated public static final String JDBC_SEQUENCE_CONNECTION_POOL_MIN
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
      The "eclipselink.jdbc.sequence-connection-pool.min" property configures the minimum number of connections in sequence connection pool. Connections beyond the minimum will be disconnected when returned to the pool, so this should normally be equal to the maximum to avoid connecting/disconnecting.

      By default a separate sequence connection pool is not used (the sequence is allocated on the write connection).

      This property is ignored in case external connection pools are used.

      Default: 2

      Allowed Values:

      • a string containing a zero or greater integer value.

      See:

      See Also:
    • JDBC_SEQUENCE_CONNECTION_POOL_INITIAL

      @Deprecated public static final String JDBC_SEQUENCE_CONNECTION_POOL_INITIAL
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
      The "eclipselink.jdbc.sequence-connection-pool.initial property configures the initial number of connections in sequence connection pool. This is the number of connections connected at startup.

      By default a separate sequence connection pool is not used (the sequence is allocated on the write connection).

      This property is ignored in case external connection pools are used.

      Default: 2

      Allowed Values:

      • a string containing a zero or greater integer value.

      See:

      See Also:
    • JDBC_SEQUENCE_CONNECTION_POOL

      @Deprecated public static final String JDBC_SEQUENCE_CONNECTION_POOL
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_SEQUENCE
      The "eclipselink.jdbc.sequence-connection-pool" property configures a separate connection pool should used for sequencing to retrieve new value(s). This improves sequence allocation by allocating sequencing outside the current transaction. This can be used with internal or external (DataSource) connection pooling, external must provide a non-jta-datasource resource name using JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE. A sequence connection pool is generally only used with using TABLE sequencing to minimize contention on the sequence table(s).

      Allowed Values (case-insensitive):

      • "false" (DEFAULT)
      • "true"

      See:

      See Also:
    • JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE

      @Deprecated public static final String JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE
      Deprecated.
      as of EclipseLink 2.2 replaced by CONNECTION_POOL_NON_JTA_DATA_SOURCE
      The "eclipselink.jdbc.sequence-connection-pool.non-jta-data-source property configures the name of the non-JTA data source that will be used for sequencing calls.
      See Also:
    • PARTITIONING

      public static final String PARTITIONING
      The "eclipselink.partitioning" property specifies the default PartitioningPolicy for a persistence unit.
      A PartitioningPolicy is used to partition the data for a class across multiple difference databases or across a database cluster such as Oracle RAC.
      Partitioning can provide improved scalability by allowing multiple database machines to service requests.

      If multiple partitions are used to process a single transaction, JTA should be used for proper XA transaction support.

      Allowed Values:

      See Also:
    • PARTITIONING_CALLBACK

      public static final String PARTITIONING_CALLBACK
      The "eclipselink.partitioning.callback" is used to integrate with an external DataSource's data affinity support, such as UCP.

      Allowed Values:

      • the fully qualified name for a class that implements DataPartitioningCallback interface i.e. "org.eclipse.persistence.platform.database.oracle.ucp.UCPDataPartitioningCallback"
      See Also:
    • JDBC_BIND_PARAMETERS

      public static final String JDBC_BIND_PARAMETERS
      Property "eclipselink.jdbc.bind-parameters" configures whether parameter binding should be used in the creation of JDBC prepared statements.

      Usage of parameter binding is generally a performance optimization; allowing for SQL and prepared statement caching, as well as usage of batch writing.

      Allowed Values:

      • "false" - all values will be written literally into the generated SQL
      • "true" (DEFAULT) - all values will be bound as parameters in the generated SQL
      See Also:
    • JDBC_ALLOW_PARTIAL_PARAMETERS

      public static final String JDBC_ALLOW_PARTIAL_PARAMETERS
      Property "eclipselink.jdbc.allow-partial-bind-parameters" configures whether partial parameter binding should be allowed in the creation of JDBC prepared statements.

      EclipseLink determines binding behavior based on the database platform's support for binding. If the database platform doesn't support binding for a specific expression, EclipseLink disables all binding for the whole query. Setting this property to 'true' will allow EclipseLink to bind per expression, instead of per query.

      Usage of parameter binding is generally a performance optimization; allowing for SQL and prepared statement caching, as well as usage of batch writing.

      Allowed Values:

      • "true" - EclipseLink binds parameters per SQL function/expression. Requires Platform support if enabled.
      • "false" (DEFAULT) - EclipseLink either binds all parameters or no parameters; depending on database support
      See Also:
    • JDBC_FORCE_BIND_PARAMETERS

      public static final String JDBC_FORCE_BIND_PARAMETERS
      Property "eclipselink.jdbc.force-bind-parameters" enables parameter binding in the creation of JDBC prepared statements. Some database platforms disable parameter binding on certain functions and relations. This property allows the user to force parameter binding to be enabled regardless.

      Allowed Values:

      • "false" (DEFAULT) - values will default to platform specific logic
      • "true" - bindings will use platform default
      See Also:
    • EXCLUSIVE_CONNECTION_MODE

      public static final String EXCLUSIVE_CONNECTION_MODE
      The "eclipselink.jdbc.exclusive-connection.mode" property specifies when reads are performed through the write connection.
      You can set this property while creating either an EntityManagerFactory (either in the map passed to the createEntityManagerFactory method, or in the persistence.xml file), or an EntityManager (in the map passed to the createEntityManager method). Note that the latter overrides the former.

      Allowed Values:

      See Also:
    • EXCLUSIVE_CONNECTION_IS_LAZY

      public static final String EXCLUSIVE_CONNECTION_IS_LAZY
      The "eclipselink.jdbc.exclusive-connection.is-lazy" property specifies when write connection is acquired lazily.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • CACHE_STATEMENTS_SIZE

      public static final String CACHE_STATEMENTS_SIZE
      The "eclipselink.jdbc.cache-statements.size" property specifies the number of statements held when using internal statement caching.

      Default: 50

      Allowed Values:

      • a string containing a zero or greater integer value.
      See Also:
    • CACHE_STATEMENTS

      public static final String CACHE_STATEMENTS
      The "eclipselink.jdbc.cache-statements" property specifies whether JDBC statements should be cached. This is recommended when using EclipseLink's internal connection pooling.

      Allowed Values:

      • "false" (DEFAULT) - disable internal statement caching.
      • "true" - enable internal statement caching.

      Persistence XML example:

       <property name="eclipselink.jdbc.cache-statements" value="false"/>

      Java example:

       props.put(PersistenceUnitProperties.CACHE_STATEMENTS, "false");
      See Also:
    • VALIDATOR_FACTORY

      public static final String VALIDATOR_FACTORY
      The "jakarta.persistence.validation.factory" property specifies an instance of jakarta.validation.ValidatorFactory used by EclipseLink to perform Automatic Validation upon Lifecycle Events. If the property is not specified, and if Bean Validation API is visible to EclipseLink, it will try to instantiate an instance of jakarta.validation.ValidationFactory by calling Validation.buildDefaultValidatorFactory().
      See Also:
    • VALIDATION_MODE

      public static final String VALIDATION_MODE
      The "jakarta.persistence.validation.mode" property specifies whether the automatic lifecycle event validation is in effect.

      Allowed Values:

      • "AUTO"
      • "CALLBACK"
      • "NONE"
      See Also:
    • VALIDATION_GROUP_PRE_PERSIST

      public static final String VALIDATION_GROUP_PRE_PERSIST
      The "jakarta.persistence.validation.group.pre-persist" property specifies the name of the validator groups to execute for preUpdate event. The value should be a string with fully qualified classnames separated by a comma (','). If this value is not specified in both persistence.xml or using this property, the default Bean Validation group (the group Default) will be validated
      See Also:
    • VALIDATION_GROUP_PRE_UPDATE

      public static final String VALIDATION_GROUP_PRE_UPDATE
      The "jakarta.persistence.validation.group.pre-update" property specifies the name of the validator groups to execute for preUpdate event. The value should be a string with fully qualified classnames separated by a comma (','). If this value is not specified in both persistence.xml or using this property, the default Bean Validation group (the group Default) will be validated
      See Also:
    • VALIDATION_GROUP_PRE_REMOVE

      public static final String VALIDATION_GROUP_PRE_REMOVE
      The "jakarta.persistence.validation.group.pre-remove" property specifies the name of the validator groups to execute for preRemove event. The value should be a string with fully qualified classnames separated by a comma (','). If this value is not specified in both persistence.xml or using this property, no validation will occur on remove.
      See Also:
    • BEAN_VALIDATION_NO_OPTIMISATION

      public static final String BEAN_VALIDATION_NO_OPTIMISATION
      Property for disabling Bean Validation optimisations. Bean Validation features optimisations, which are used to skip BV processes on non-constrained objects. This is to make maintenance easier and to allow for debugging in case that some object is not validated, but should be. Usage: set to Boolean.TRUE to disable optimisations, set to Boolean.FALSE to re-enable them again.
      See Also:
    • DEFAULT

      public static final String DEFAULT
      Default Suffix could be appended to some prefixes to form a property name setting the default for the persistence unit.
      See Also:
    • CACHE_SIZE_

      public static final String CACHE_SIZE_
      Property prefix "eclipselink.cache.size." is used to specify the cache size for a specific entity type. The prefix must be followed by a valid entity type name.

      Property names formed out of these prefixes by appending either entity name, or class name (indicating that the property values applies only to a particular entity) or DEFAULT suffix (indicating that the property value applies to all entities).

      For most cache types, the size is only the initial size, not a fixed or maximum size. For CacheType.SoftCache and CacheType.HardCache the size is the sub-cache size. The default cache size is 100.

      See Also:
    • CACHE_TYPE_

      public static final String CACHE_TYPE_
      Property prefix "eclipselink.cache.type." sets the type of cache for a specific entity type. The prefix must be followed by a valid entity type name.

      Property names formed out of these prefixes by appending either entity name, or class name (indicating that the property values applies only to a particular entity) or DEFAULT suffix (indicating that the property value applies to all entities).

      All valid values for CACHE_TYPE_ properties are declared in CacheType class. The default cache type is CacheType.SoftWeak.

      If you do not wish to cache entities at all, then set CACHE_SHARED_ to "false".

      See Also:
    • CACHE_SHARED_

      public static final String CACHE_SHARED_
      Property prefix "eclipselink.cache.shared." indicates whether entity's cache should be shared (non-isolated) for a specific entity type. The prefix must be followed by a valid entity type name.

      Property names formed out of these prefixes by appending either entity name, or class name (indicating that the property values applies only to a particular entity) or DEFAULT suffix (indicating that the property value applies to all entities).

      If you do not wish to cache your entities, set this to "false".

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • SHARED_CACHE_MODE

      public static final String SHARED_CACHE_MODE
      The "jakarta.persistence.sharedCache.mode" property determines whether second-level caching is in effect for the persistence unit. This property overrides the value specified by the <shared-cache-mode> element in the persistence.xml.

      Allowed Values:

      • "ALL"
      • "NONE"
      • "ENABLE_SELECTIVE"
      • "DISABLE_SELECTIVE"
      • "UNSPECIFIED"
      See Also:
    • CACHE_SIZE_DEFAULT

      public static final String CACHE_SIZE_DEFAULT
      Default caching properties - apply to all entities. May be overridden by individual entity property with the same prefix. For most cache types, the size is only the initial size, not a fixed or maximum size. For CacheType.SoftCache and CacheType.HardCache the size is the sub-cache size. The default cache size is 100.
      See Also:
    • CACHE_TYPE_DEFAULT

      public static final String CACHE_TYPE_DEFAULT
      Default caching properties - apply to all entities. May be overridden by individual entity property with the same prefix. The default cache type is SoftWeak. This sets the type of cache, if you do not wish to cache entities at all, then set CACHE_SHARED_DEFAULT.
      See Also:
    • CACHE_EXTENDED_LOGGING

      public static final String CACHE_EXTENDED_LOGGING
      The "eclipselink.cache.extended.logging" property control (enable/disable) usage logging of JPA L2 cache. In case of "true" EclipseLink generates messages into log output about cache hit/miss new object population and object removal or invalidation. This kind of messages will by displayed only if logging level (property "eclipselink.logging.level") is "FINEST" It displays Entity class, ID and thread info (ID, Name).

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • THREAD_EXTENDED_LOGGING

      public static final String THREAD_EXTENDED_LOGGING
      The "eclipselink.thread.extended.logging" property control (enable/disable) some additional logging messages like print error message if cached Entity is picked by different thread, or if EntityManager/UnitOfWork is reused/passed to different thread.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • THREAD_EXTENDED_LOGGING_THREADDUMP

      public static final String THREAD_EXTENDED_LOGGING_THREADDUMP
      The "eclipselink.thread.extended.logging.threaddump" property control (enable/disable) store and display thread dump. This is extension to "eclipselink.thread.extended.logging" which must be enabled. It prints additionally to some log messages presented by "eclipselink.thread.extended.logging" creation and current thread stack traces.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • CANONICAL_MODEL_PREFIX

      public static final String CANONICAL_MODEL_PREFIX
      The "eclipselink.canonicalmodel.prefix" optional property specifies the prefix that will be added to the start of the class name of any canonical model class generated. By default the prefix is not used.
      See Also:
    • CANONICAL_MODEL_PREFIX_DEFAULT

      public static String CANONICAL_MODEL_PREFIX_DEFAULT
      Default prefix that will be added to the start of the class name of any canonical model class generated.
      See Also:
    • CANONICAL_MODEL_SUFFIX

      public static final String CANONICAL_MODEL_SUFFIX
      The "eclipselink.canonicalmodel.suffix" optional property specifies the suffix that will be added to the end of the class name of any canonical model class generated. The suffix defaults to "_" unless a prefix is specified. If this property is specified, the value must be a non-empty string that contains valid characters for use in a Java class name.
      See Also:
    • CANONICAL_MODEL_SUFFIX_DEFAULT

      public static String CANONICAL_MODEL_SUFFIX_DEFAULT
      Default suffix that will be added to the end of the class name of any canonical model class generated.
      See Also:
    • CANONICAL_MODEL_SUB_PACKAGE

      public static final String CANONICAL_MODEL_SUB_PACKAGE
      The "eclipselink.canonicalmodel.subpackage" optional property specifies a sub-package name that can be used to have the canonical model generator generate its classes in a sub-package of the package where the corresponding entity class is located. By default the canonical model classes are generated into the same package as the entity classes.
      See Also:
    • CANONICAL_MODEL_SUB_PACKAGE_DEFAULT

      public static String CANONICAL_MODEL_SUB_PACKAGE_DEFAULT
      Default sub-package name that is used to have the canonical model generator generate its classes in a sub-package of the package where the corresponding entity class is located.
      See Also:
    • CANONICAL_MODEL_LOAD_XML

      public static final String CANONICAL_MODEL_LOAD_XML
      The "eclipselink.canonicalmodel.load_xml" optional property can be used a performance enhancement between compile rounds. It is used to avoid reloading XML metadata on each compile which may only contain a single class etc. The default value is true and should be left as such for the initial generation to capture the XML metadata. Afterwards users may choose to set this flag if no changes to XML are expected thereafter.
      See Also:
    • CANONICAL_MODEL_LOAD_XML_DEFAULT

      public static final String CANONICAL_MODEL_LOAD_XML_DEFAULT
      Default value for the "eclipselink.canonicalmodel.load_xml" optional property.
      See Also:
    • CANONICAL_MODEL_USE_STATIC_FACTORY

      public static final String CANONICAL_MODEL_USE_STATIC_FACTORY
      The "eclipselink.canonicalmodel.use_static_factory" optional property can be used a performance enhancement between compile rounds within an IDE. It is used to avoid using a static metadata factory between 'cache' metadata from incremental builds. Turning this off in some use cases (IDE) could result in a loss of functionality. The default value is true and should be left as such for full feature support.
      See Also:
    • CANONICAL_MODEL_USE_STATIC_FACTORY_DEFAULT

      public static final String CANONICAL_MODEL_USE_STATIC_FACTORY_DEFAULT
      Default value for the "eclipselink.canonicalmodel.use_static_factory" optional property.
      See Also:
    • CANONICAL_MODEL_GENERATE_GENERATED

      public static final String CANONICAL_MODEL_GENERATE_GENERATED
      The "eclipselink.canonicalmodel.use_generated" optional property can be used to disable generation of Generated annotation. The default value is true. If the value is false, CANONICAL_MODEL_GENERATE_TIMESTAMP and CANONICAL_MODEL_GENERATE_COMMENTS properties are ignored.
      See Also:
    • CANONICAL_MODEL_GENERATE_GENERATED_DEFAULT

      public static final String CANONICAL_MODEL_GENERATE_GENERATED_DEFAULT
      Default value for the "eclipselink.canonicalmodel.use_generated" optional property.
      See Also:
    • CANONICAL_MODEL_GENERATE_TIMESTAMP

      public static final String CANONICAL_MODEL_GENERATE_TIMESTAMP
      The "eclipselink.canonicalmodel.generate_timestamp" optional property can be used to disable usage of date in declaration of Generated annotation. The default value is true.
      See Also:
    • CANONICAL_MODEL_GENERATE_TIMESTAMP_DEFAULT

      public static final String CANONICAL_MODEL_GENERATE_TIMESTAMP_DEFAULT
      Default value for the "eclipselink.canonicalmodel.generate_timestamp" optional property.
      See Also:
    • CANONICAL_MODEL_GENERATE_COMMENTS

      public static final String CANONICAL_MODEL_GENERATE_COMMENTS
      The "eclipselink.canonicalmodel.generate_comments" optional property can be used to disable usage of comments in declaration of Generated annotation. The default value is true.
      See Also:
    • CANONICAL_MODEL_GENERATE_COMMENTS_DEFAULT

      public static final String CANONICAL_MODEL_GENERATE_COMMENTS_DEFAULT
      Default value for the "eclipselink.canonicalmodel.generate_comments" optional property.
      See Also:
    • CACHE_SHARED_DEFAULT

      public static final String CACHE_SHARED_DEFAULT
      Default caching properties - apply to all entities. May be overridden by individual entity property with the same prefix. If you do not wish to cache your entities, set this to "false".
      See Also:
    • QUERY_CACHE

      public static final String QUERY_CACHE
      Property prefix "eclipselink.cache.query-results" used to configure the default option for query results caching.

      The query results cache is separate from the object cache. It caches the results of named query execution. The query results cache is not enabled by default, and can be enabled per query. This option allows it to be enabled for all named queries.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • DATABASE_EVENT_LISTENER

      public static final String DATABASE_EVENT_LISTENER
      The "eclipselink.cache.database-event-listener" property allows integration with a database event notification service. This allows the EclipseLink cache to be invalidated by database change events. This is used to support Oracle QCN/DCN (Database Change event Notification), but could also be used by triggers or other services, or other types of events.

      Allowed Values:

      • the fully qualified name for a class that implements DatabaseEventListener interface, for example "org.eclipse.persistence.platform.database.oracle.dcn.OracleChangeNotificationListener"
      • "DCN" - for Oracle only
      • "QCN" - for Oracle only
      See Also:
    • CACHE_QUERY_FORCE_DEFERRED_LOCKS

      public static final String CACHE_QUERY_FORCE_DEFERRED_LOCKS
      The "eclipselink.cache.query-force-deferred-locks" property force all queries and relationships to use deferred lock strategy during object building and L2 cache population.

      Allowed Values (String):

      • "false" (DEFAULT) - use use mixed object cache locking strategy
      • "true" - use deferred locking strategy all queries and relationships
      See Also:
    • LOGGING_LOGGER

      public static final String LOGGING_LOGGER
      The "eclipselink.logging.logger" property specifies the type of logger.

      Default: DefaultSessionLog

      Allowed Values:

      • the fully qualified name for a class that implements SessionLog interface
      • one of values defined in LoggerType
      See Also:
    • LOGGING_LEVEL

      public static final String LOGGING_LEVEL
      The "eclipselink.logging.level" property allows the default logging levels to be specified.
      Logging Levels:
      SessionLog.ALL_LABEL ALL
      SessionLog.FINEST_LABEL FINEST
      SessionLog.FINER_LABEL FINER
      SessionLog.FINE_LABEL FINE
      SessionLog.CONFIG_LABEL CONFIG
      SessionLog.INFO_LABEL INFO (DEFAULT)
      SessionLog.WARNING_LABEL WARNING
      SessionLog.SEVERE_LABEL SEVERE
      SessionLog.OFF_LABEL OFF

      Persistence XML example:

       <property name="eclipselink.logging.level" value="FINE" />

      Java example:

       props.put(PersistenceUnitProperties.LOGGING_LEVEL, SessionLog.FINE_LABEL);
      See Also:
    • CATEGORY_LOGGING_LEVEL_

      public static final String CATEGORY_LOGGING_LEVEL_
      Property prefix "eclipselink.logging.level." allows the category specific logging levels to be specified.
      Logger categories:
      SessionLog.CACHE cache
      SessionLog.CONNECTION connection
      SessionLog.DMS dms
      SessionLog.EJB ejb
      SessionLog.EVENT event
      SessionLog.JPA jpa
      SessionLog.METAMODEL metamodel
      SessionLog.PROPAGATION propagation
      SessionLog.PROPERTIES properties
      SessionLog.QUERY query
      SessionLog.SEQUENCING sequencing
      SessionLog.SERVER server
      SessionLog.SQL sql
      SessionLog.TRANSACTION transaction
      SessionLog.WEAVER weaver

      Allowed Values:

      • names of levels defined in java.util.logging.Level, default value is INFO.

      Persistence XML example:

       <property name="eclipselink.logging.level.ejb_or_metadata" value="WARNING"/>

      Java example:

       props.put(PersistenceUnitProperties.CATEGORY_LOGGING_LEVEL_ + SessionLog.EJB_OR_METADATA, SessionLog.WARNING_LABEL);
      See Also:
    • LOGGING_PARAMETERS

      public static final String LOGGING_PARAMETERS
      By default sql bind parameters are displayed in exceptions and logs when the log level is FINE or greater. To override this behavior you may set this property to specify that the data should or should not be visible.
      Note: this property applies only to bind parameters. When not using binding, the parameters are always displayed.

      Allowed Values:

      • "false"
      • "true"
      See Also:
    • LOGGING_TIMESTAMP

      public static final String LOGGING_TIMESTAMP
      The "eclipselink.logging.timestamp" property configures if the current time stamp should be included in each log message.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • LOGGING_THREAD

      public static final String LOGGING_THREAD
      Property "eclipselink.logging.thread" indicates if current thread should have its identity included in each log message.

      By default ("true") the thread is logged at FINE or less level. This can be turned off ("false") or on ("true").

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • LOGGING_SESSION

      public static final String LOGGING_SESSION
      Property "eclipselink.logging.session" indicates if the session in use should have its identity included in each log message.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • LOGGING_CONNECTION

      public static final String LOGGING_CONNECTION
      Property "eclipselink.logging.connection" indicates if the connection in use should have its identity included in each log message.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • LOGGING_EXCEPTIONS

      public static final String LOGGING_EXCEPTIONS
      Property "eclipselink.logging.exceptions" indicates if exception stack traces should be included in each log message.
      By default stack trace is logged for SEVERE all the time and at FINER level for WARNING or less.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • LOGGING_FILE

      public static final String LOGGING_FILE
      The "eclipselink.logging.file" property configures a file location where the log will be output to instead of standard out.
      See Also:
    • MULTITENANT_PROPERTY_DEFAULT

      public static final String MULTITENANT_PROPERTY_DEFAULT
      The "eclipselink.tenant-id" property specifies the default context property used to populate multitenant entities.

      NOTE: This is merely a default multitenant property than can be used on its own or with other properties defined by the user. Users are not obligated to use this property and are free to specify their own.

      Persistence XML example:

       <property name="eclipselink.tenant-id" value="Oracle" />

      Java example:

       props.put(PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT, "Oracle");
      See Also:
    • MULTITENANT_SCHEMA_PROPERTY_DEFAULT

      public static final String MULTITENANT_SCHEMA_PROPERTY_DEFAULT
      The "eclipselink.tenant-schema-id" property specifies the context property used to distinguish tenants when using global schema per tenant multitenant strategy. It is expected to be set by user when creating an EntityManager.

      Persistence XML example:

       <property name="eclipselink.tenant-schema-id" value="Oracle" />

      Java example:

       props.put(PersistenceUnitProperties.MULTITENANT_SCHEMA_PROPERTY_DEFAULT, "Oracle");
      See Also:
    • MULTITENANT_SHARED_CACHE

      public static final String MULTITENANT_SHARED_CACHE
      Property "eclipselink.multitenant.tenants-share-cache" specifies that multitenant entities will share the L2 cache. By default this property is false meaning multitenant entities will have an ISOLATED setting. When setting it to true a PROTECTED cache setting will be used.

      WARNING: Queries that use the cache may return data from other tenants when using the PROTECTED setting.

      Persistence XML example:

       <property name="eclipselink.multitenant.tenants-share-cache" value="true" />

      Java example:

       props.put(PersistenceUnitProperties.MULTITENANT_SHARED_CACHE, true);
      See Also:
    • MULTITENANT_SHARED_EMF

      public static final String MULTITENANT_SHARED_EMF
      Property "eclipselink.multitenant.shared-emf" is used to indicate that multitenant entities will be used within a shared entity manager factory. This property defaults to "true" (and applies to multitenant entities only). When setting it to "false", users are required to provide a unique session name.

      Persistence XML example:

       <property name="eclipselink.multitenant.tenants-share-emf" value=""true" />

      Java example:

       props.put(PersistenceUnitProperties.MULTITENANT_SHARED_EMF, true);
      See Also:
    • MULTITENANT_STRATEGY

      public static final String MULTITENANT_STRATEGY
      The "eclipselink.multitenant.strategy" property specifies the global, project wide multitenancy strategy.

      Allowed Values:

      • "external"
      • the fully qualified name for a class that implements MultitenantPolicy interface with public no-arg constructor

      Persistence XML example:

       <property name="eclipselink.multitenant.strategy" value="external"/>

      Java example:

       props.put(PersistenceUnitProperties.MULTITENANT_STRATEGY, "external");
      See Also:
    • TABLE_CREATION_SUFFIX

      public static final String TABLE_CREATION_SUFFIX
      The "eclipselink.ddl.table-creation-suffix" property is used in conjunction with DDL generation options to append a string to the end of generated CREATE Table statements.

      This value is applied to all Table creation statements through the DDL generation feature ie <property name="eclipselink.ddl.table-creation-suffix" value="engine=InnoDB"/>

      See Also:
    • TARGET_DATABASE

      public static final String TARGET_DATABASE
      The "eclipselink.target-database" property configures the database that will be used controlling custom operations and SQL generation for the specified database.

      Default: TargetDatabase.Auto which means EclipseLink will try to automatically determine the correct database platform type.

      Note: "eclipselink.target-database" must be specified with a non-"Auto" class name or short name when "eclipselink.validation-only" is set to "true".

      Allowed Values:

      See Also:
    • TARGET_DATABASE_PROPERTIES

      public static final String TARGET_DATABASE_PROPERTIES
      The "eclipselink.target-database-properties" property configures additional properties for the configured target-database.

      Allowed Values:

      • A comma delimited key=value pairs (ie: key1=value1,key2=value2). Each key is expected to be a set[key_name] method on the configured target-database. The value must be the Stringified value to be passed into the set[key] method.

      Note: Keys and values cannot contain '=' or ','

      If an invalid property is located a ConversionException will be thrown.

      Example : To change the value of DatabasePlatform.shouldBindLiterals via configuration, provide the following :

      <property name="eclipselink.target-database-properties" value="shouldBindLiterals=true"/>

      Example 2 : To change the value of DatabasePlatform.supportsReturnGeneratedKeys via configuration, provide the following :

      <property name="eclipselink.target-database-properties" value="supportsReturnGeneratedKeys=true"/>

      See Also:
    • SESSION_NAME

      public static final String SESSION_NAME
      The "eclipselink.session-name" property configures a specific name to use when storing the singleton server session within the SessionManager.

      If a sessions-xml file is used this must be the name of the session in the sessions-xml file.

      By default a unique session name is generated by EclipseLink, but the user can provide a customary session name - and make sure it's unique.

      See Also:
    • WEAVING

      public static final String WEAVING
      The "eclipselink.weaving" property configures whether weaving should be performed. Weaving is required for lazy OneToOne, ManyToOne, Basic, attribute change tracking, fetch groups, and other optimizations.

      Allowed Values:

      • Not Set - defaults to "true" in Java SE using javaagent and within EJB 3+ compliant containers
      • "true" - requires that weaving is done. Will throw an exception if entities are not woven
      • "false" - forces weaving not to be done
      • "static" - requires that the static weaving utility was used to weave the entities
      Note: Any value specified that is not in the above list is treated as "static".
      See Also:
    • WEAVING_INTERNAL

      public static final String WEAVING_INTERNAL
      The "eclipselink.weaving.internal" property indicates whether internal optimizations should be enabled through weaving. Internal optimizations include caching of primary key and session, addition of a serialVersionUID if none exists, optimization of EclipseLink's cloning strategy and optimization of the way EclipseLink gets and sets values from fields mapped as Basic.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • WEAVING_LAZY

      public static final String WEAVING_LAZY
      The "eclipselink.weaving.lazy" property configures whether LAZY OneToOne and ManyToOne mappings should be enabled through weaving.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • WEAVING_EAGER

      public static final String WEAVING_EAGER
      The "eclipselink.weaving.eager" property configures whether EAGER mapping's attributes should be woven to use indirection.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • WEAVING_CHANGE_TRACKING

      public static final String WEAVING_CHANGE_TRACKING
      The "eclipselink.weaving.changetracking" property configures whether AttributeLevelChangeTracking should be enabled through weaving. When this is enabled, only classes with all mappings allowing change tracking will have change tracking enabled. Mutable basic attributes will prevent this.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • WEAVING_FETCHGROUPS

      public static final String WEAVING_FETCHGROUPS
      The "eclipselink.weaving.fetchgroups" property configures whether FetchGroup support should be enabled through weaving. When this is enabled, lazy direct mappings will be supported as well as descriptor and query level FetchGroups. FetchGroups allow partial objects to be read and written, access to un-fetched attributes will cause the object to be refreshed/fully-fetched.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • WEAVING_MAPPEDSUPERCLASS

      public static final String WEAVING_MAPPEDSUPERCLASS
      The "eclipselink.weaving.mappedsuperclass" property configures whether MappedSuperclasses with no direct sub-classes will be woven.

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "true" (DEFAULT)
      • "false"
      See Also:
    • WEAVING_REST

      public static final String WEAVING_REST
      The "eclipselink.weaving.rest" property configures whether classes will be woven to support EclipseLink JPA_RS functionality

      This property will only be considered if weaving is enabled.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • TARGET_SERVER

      public static final String TARGET_SERVER
      The "eclipselink.target-server" property configures the ServerPlatform that will be used to enable integration with a host container.

      Default: TargetServer.None

      Allowed Values:

      • a short string value as defined in TargetServer class - this corresponds to server platforms currently supported
      • the fully qualified name for a class that implements ServerPlatform interface
      Specifying a name of the class implementing ExternalTransactionController sets CustomServerPlatform with this controller.
      See Also:
    • JTA_CONTROLLER

      public static final String JTA_CONTROLLER
      The "eclipselink.jta.controller" property allows to override JTA transaction controller class of ServerPlatform.

      Value of this property is a fully qualified name of a class that implements ExternalTransactionController interface.

      If both "eclipselink.target-server" and "eclipselink.jta.controller" properties are set and contain classes implementing ExternalTransactionController interface, "eclipselink.target-server" value is used.

      See Also:
    • SCHEMA_GENERATION_DATABASE_ACTION

      public static final String SCHEMA_GENERATION_DATABASE_ACTION

      The "jakarta.persistence.schema-generation.database.action" property specifies the action to be taken by the persistence provider with regard to the database artifacts.

      The values for this property are "none", "create", "drop-and-create", "drop".

      EclipseLink also supports the "create-or-extend-tables" option.

      If the "jakarta.persistence.schema-generation.database.action" property is not specified, no schema generation actions must be taken on the database.

      See Also:
    • SCHEMA_GENERATION_SCRIPTS_ACTION

      public static final String SCHEMA_GENERATION_SCRIPTS_ACTION

      The "jakarta.persistence.schema-generation.scripts.action" property specifies which scripts are to be generated by the persistence provider.

      The values for this property are "none", "create", "drop-and-create", "drop".

      Scripts will only be generated if script targets are specified. If this property is not specified, no scripts will be generated.

      See Also:
    • SCHEMA_GENERATION_CREATE_SOURCE

      public static final String SCHEMA_GENERATION_CREATE_SOURCE

      The "jakarta.persistence.schema-generation.create-source" property specifies whether the creation of database artifacts is to occur on the basis of the object/relational mapping metadata, DDL script, or a combination of the two.

      The values for this property are "metadata", "script", "metadata-then-script", "script-then-metadata".

      If this property is not specified, and a script is specified by the "jakarta.persistence.schema-generation.create-script-source property", the script (only) will be used for schema generation; otherwise if this property is not specified, schema generation will occur on the basis of the object/relational mapping metadata (only).

      The "metadata-then-script" and "script-then-metadata" values specify that a combination of metadata and script is to be used and the order in which this use is to occur. If either of these values is specified and the resulting database actions are not disjoint, the results are undefined and schema generation may fail.

      See Also:
    • SCHEMA_GENERATION_DROP_SOURCE

      public static final String SCHEMA_GENERATION_DROP_SOURCE

      The "jakarta.persistence.schema-generation.drop-source" property specifies whether the dropping of database artifacts is to occur on the basis of the object/relational mapping metadata, DDL script, or a combination of the two.

      The values for this property are "metadata", "script", "metadata-then-script", "script-then-metadata".

      If this property is not specified, and a script is specified by the "jakarta.persistence.schema-generation.drop-script-source" property, the script (only) will be used for the dropping of database artifacts; otherwise if this property is not specified, the dropping of database artifacts will occur on the basis of the object/relational mapping metadata (only).

      The "metadata-then-script" and "script-then-metadata" values specify that a combination of metadata and script is to be used and the order in which this use is to occur. If either of these values is specified and the resulting database actions are not disjoint, the results are undefined and the dropping of database artifacts may fail.

      See Also:
    • SCHEMA_GENERATION_CREATE_DATABASE_SCHEMAS

      public static final String SCHEMA_GENERATION_CREATE_DATABASE_SCHEMAS

      In Java EE environments, it is anticipated that the Java EE platform provider may wish to control the creation of database schemas rather than delegate this task to the persistence provider.

      The "jakarta.persistence.schema-generation.create-database-schemas" property specifies whether the persistence provider is to create the database schema(s) in addition to creating database objects such as tables, sequences, constraints, etc.

      The value of this boolean property should be set to true if the persistence provider is to create schemas in the database or to generate DDL that contains "CREATE SCHEMA" commands. If this property is not supplied, the provider should not attempt to create database schemas. This property may also be specified in Java SE environments.

      See Also:
    • SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET

      public static final String SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET

      If scripts are to be generated, the target locations for the writing of these scripts must be specified.

      The "jakarta.persistence.schema-generation.scripts.create-target" property specifies a java.IO.Writer configured for use by the persistence provider for output of the DDL script or a string specifying the file URL for the DDL script. This property should only be specified if scripts are to be generated.

      See Also:
    • SCHEMA_GENERATION_SCRIPTS_DROP_TARGET

      public static final String SCHEMA_GENERATION_SCRIPTS_DROP_TARGET

      If scripts are to be generated, the target locations for the writing of these scripts must be specified.

      The "jakarta.persistence.schema-generation.scripts.drop-target" property specifies a java.IO.Writer configured for use by the persistence provider for output of the DDL script or a string specifying the file URL for the DDL script. This property should only be specified if scripts are to be generated.

      See Also:
    • SCHEMA_DATABASE_PRODUCT_NAME

      public static final String SCHEMA_DATABASE_PRODUCT_NAME

      If scripts are to be generated by the persistence provider and a connection to the target database is not supplied, the "jakarta.persistence.database-product-name" property must be specified.

      The value of this property should be the value returned for the target database by the JDBC DatabaseMetaData method getDatabaseProductName.

      If sufficient database version information is not included in the result of this method, the "jakarta.persistence.database-major-version" and "jakarta.persistence.database-minor-version" properties should be specified as needed. These should contain the values returned by the JDBC getDatabaseMajorVersion and getDatabaseMinor-Version methods respectively.

      See Also:
    • SCHEMA_DATABASE_MAJOR_VERSION

      public static final String SCHEMA_DATABASE_MAJOR_VERSION

      If sufficient database version information is not included from the JDBC DatabaseMetaData method getDatabaseProductName, the "jakarta.persistence.database-major-version" property should be specified as needed. This should contain the value returned by the JDBC getDatabaseMajor-Version method.

      See Also:
    • SCHEMA_DATABASE_MINOR_VERSION

      public static final String SCHEMA_DATABASE_MINOR_VERSION

      If sufficient database version information is not included from the JDBC DatabaseMetaData method getDatabaseProductName, the "jakarta.persistence.database-minor-version" property should be specified as needed. This should contain the value returned by the JDBC getDatabaseMinor-Version method.

      See Also:
    • SCHEMA_GENERATION_CREATE_SCRIPT_SOURCE

      public static final String SCHEMA_GENERATION_CREATE_SCRIPT_SOURCE

      The "jakarta.persistence.schema-generation.create-script-source" is used for script execution.

      In Java EE container environments, it is generally expected that the container will be responsible for executing DDL scripts, although the container is permitted to delegate this task to the persistence provider.

      If DDL scripts are to be used in Java SE environments or if the Java EE container delegates the execution of scripts to the persistence provider, this property must be specified.

      The "jakarta.persistence.schema-generation.create-script-source" property specifies a java.IO.Reader configured for reading of the DDL script or a string designating a file URL for the DDL script.

      See Also:
    • SCHEMA_GENERATION_DROP_SCRIPT_SOURCE

      public static final String SCHEMA_GENERATION_DROP_SCRIPT_SOURCE

      The "jakarta.persistence.schema-generation.drop-script-source" is used for script execution.

      In Java EE container environments, it is generally expected that the container will be responsible for executing DDL scripts, although the container is permitted to delegate this task to the persistence provider.

      If DDL scripts are to be used in Java SE environments or if the Java EE container delegates the execution of scripts to the persistence provider, this property must be specified.

      The "jakarta.persistence.schema-generation.drop-script-source" property specifies a java.IO.Reader configured for reading of the DDL script or a string designating a file URL for the DDL script.

      See Also:
    • SCHEMA_GENERATION_CONNECTION

      public static final String SCHEMA_GENERATION_CONNECTION

      The "jakarta.persistence.schema-generation.connection" property specifies the JDBC connection to be used for schema generation. This is intended for use in Java EE environments, where the platform provider may want to control the database privileges that are available to the persistence provider.

      This connection is provided by the container, and should be closed by the container when the schema generation request or entity manager factory creation completes.

      The connection provided must have credentials sufficient for the persistence provider to carry out the requested actions.

      If this property is not specified, the persistence provider should use the DataSource that has otherwise been provided.

      See Also:
    • SCHEMA_GENERATION_SQL_LOAD_SCRIPT_SOURCE

      public static final String SCHEMA_GENERATION_SQL_LOAD_SCRIPT_SOURCE

      In Java EE container environments, it is generally expected that the container will be responsible for executing data load scripts, although the container is permitted to delegate this task to the persistence provider. If a load script is to be used in Java SE environments or if the Java EE container delegates the execution of the load script to the persistence provider, this property must be specified.

      The "jakarta.persistence.sql-load-script-source" property specifies a java.IO.Reader configured for reading of the SQL load script for database initialization or a string designating a file URL for the script.

      See Also:
    • SCHEMA_GENERATION_CREATE_ACTION

      public static final String SCHEMA_GENERATION_CREATE_ACTION
      The parameter value "create"

      For use with the "jakarta.persistence.schema-generation.database.action" and "jakarta.persistence.schema-generation.scripts.action" properties.

      Specifies that database tables should be created.

      See Also:
    • SCHEMA_GENERATION_DROP_AND_CREATE_ACTION

      public static final String SCHEMA_GENERATION_DROP_AND_CREATE_ACTION
      The parameter value "drop-and-create"

      For use with the "jakarta.persistence.schema-generation.database.action" and "jakarta.persistence.schema-generation.scripts.action" properties.

      Specifies that database tables should be dropped, then created.

      See Also:
    • SCHEMA_GENERATION_DROP_ACTION

      public static final String SCHEMA_GENERATION_DROP_ACTION
      The parameter value "drop"

      For use with the "jakarta.persistence.schema-generation.database.action" and "jakarta.persistence.schema-generation.scripts.action" properties.

      Specifies that database tables should be dropped.

      See Also:
    • SCHEMA_GENERATION_NONE_ACTION

      public static final String SCHEMA_GENERATION_NONE_ACTION
      The parameter value "none"

      For use with the "jakarta.persistence.schema-generation.database.action" and "jakarta.persistence.schema-generation.scripts.action" properties.

      Specifies that database tables should not be created or dropped.

      See Also:
    • SCHEMA_GENERATION_METADATA_SOURCE

      public static final String SCHEMA_GENERATION_METADATA_SOURCE
      The parameter value "metadata"

      For use with the "jakarta.persistence.schema-generation.create-source" and "jakarta.persistence.schema-generation.drop-source" properties.

      Specifies that DDL generation source will come from the metadata only.

      See Also:
    • SCHEMA_GENERATION_SCRIPT_SOURCE

      public static final String SCHEMA_GENERATION_SCRIPT_SOURCE
      The parameter value "script"

      For use with the "jakarta.persistence.schema-generation.create-source" and "jakarta.persistence.schema-generation.drop-source" properties.

      Specifies that DDL generation source will come from scripts only.

      See Also:
    • SCHEMA_GENERATION_METADATA_THEN_SCRIPT_SOURCE

      public static final String SCHEMA_GENERATION_METADATA_THEN_SCRIPT_SOURCE
      The parameter value "metadata-then-script"

      For use with the "jakarta.persistence.schema-generation.create-source" and "jakarta.persistence.schema-generation.drop-source" properties.

      Specifies that DDL generation source will come from the metadata first followed with the scripts.

      See Also:
    • SCHEMA_GENERATION_SCRIPT_THEN_METADATA_SOURCE

      public static final String SCHEMA_GENERATION_SCRIPT_THEN_METADATA_SOURCE
      The parameter value "script-then-metadata"

      For use with the "jakarta.persistence.schema-generation.create-source" and "jakarta.persistence.schema-generation.drop-source" properties.

      Specifies that DDL generation source will come from the scripts first followed with the metadata.

      See Also:
    • SCHEMA_GENERATION_SCRIPT_TERMINATE_STATEMENTS

      public static final String SCHEMA_GENERATION_SCRIPT_TERMINATE_STATEMENTS
      When the "eclipselink.ddlgen-terminate-statements" property is set to true and a DDL script is being generated, the value of DatabasePlatform.getStoredProcedureTerminationToken() is appended to the end of each statement.

      Allowed Values (String):

      • "false" - (DEFAULT) Do not print line terminator characters
      • "true"
      See Also:
    • SEQUENCING_SEQUENCE_DEFAULT

      public static final String SEQUENCING_SEQUENCE_DEFAULT
      The "eclipselink.sequencing.default-sequence-to-table" property determines the default behavior when a GeneratedValue of type SEQUENCE is used on a database platform that does not support SEQUENCE generation. By default IDENTITY generation is used if supported. If this property is set to true, then TABLE sequencing will be used instead.
      See Also:
    • SEQUENCING_START_AT_NEXTVAL

      public static final String SEQUENCING_START_AT_NEXTVAL
      By default, EclipseLink generates sequence values at (NEXTVAL - allocationSize). For instance, if NEXTVAL returns a value of 100 and the allocationSize is 50 (default), EclipseLink will begin sequence values at 100 - allocationSize. When the "eclipselink.sequencing.start-sequence-at-nextval" property is set to true, the ID values generated from sequences starting at NEXTVAL and proceeding forward.

      Allowed Values (String):

      • "false" - (DEFAULT) uses default behavior of next value - allocationSize
      • "true"
      See Also:
    • SESSION_CUSTOMIZER

      public static final String SESSION_CUSTOMIZER
      The "eclipselink.session.customizer" property configures a SessionCustomizer used to alter the runtime configuration through API.

      Session customizer is called after all other properties have been processed.

      Allowed Values:

      See Also:
    • DESCRIPTOR_CUSTOMIZER_

      public static final String DESCRIPTOR_CUSTOMIZER_
      The "eclipselink.descriptor.customizer." is a prefix for a property used to configure a DescriptorCustomizer. Customization Prefix Property names formed out of this prefix by appending either entity name, or class name (indicating that the property values applies only to a particular entity) Allows descriptor customization.

      Only session customizer is called after processing these properties.

      Allowed Values:

      See Also:
    • NATIVE_QUERY_UPPERCASE_COLUMNS

      public static final String NATIVE_QUERY_UPPERCASE_COLUMNS
      The "eclipselink.jdbc.uppercase-columns" property configures native SQL queries are used, the JDBC meta-data may return column names in lower case on some platforms. If the column names are upper-case in the mappings (default) then they will not match. This setting allows for forcing the column names from the meta-data to upper-case.

      This setting has been replaced by UPPERCASE_COLUMN_NAMES, which should be used instead, as it ensure both sides use upper case for comparisons.

      Allowed Values:

      • "false"
      • "true"
      See Also:
    • UPPERCASE_COLUMN_NAMES

      public static final String UPPERCASE_COLUMN_NAMES
      The "eclipselink.jpa.uppercase-column-names" property configures JPA processing to uppercase all column name definitions. A value of "true" also sets the "eclipselink.jdbc.uppercase-columns" property to "true", so that JDBC meta-data returned from the database is also returned in uppercase, ensuring fields are the same case. This gets around situations where user defined fields do not match the case returned by the database for native queries, simulating case insensitivity.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • BATCH_WRITING

      public static final String BATCH_WRITING
      The "eclipselink.jdbc.batch-writing" property configures the use of batch writing to optimize transactions with multiple writes.

      Batch writing allows multiple heterogeneous dynamic SQL statements to be sent to the database as a single execution, or multiple homogeneous parameterized SQL statements to be executed as a single batch execution.

      Note that not all JDBC drivers, or databases support batch writing.

      Allowed Values:

      • "JDBC" - use JDBC batch writing.
      • "Buffered" - do not use either JDBC batch writing nor native platform batch writing.
      • "Oracle-JDBC" - use Oracle's native batch writing. This requires the use of an Oracle JDBC driver.
      • "None" (DEFAULT): do not use batch writing (turn it off).
      • the fully qualified name for a class that extends BatchWritingMechanism abstract class
      See Also:
    • BATCH_WRITING_SIZE

      public static final String BATCH_WRITING_SIZE
      The "eclipselink.jdbc.batch-writing.size" property configures the batch size used for batch writing. For parameterized batch writing this is the number of statements to batch, default 100. For dynamic batch writing, this is the size of the batched SQL buffer, default 32k.
      See Also:
    • CDI_BEANMANAGER

      public static final String CDI_BEANMANAGER
      The "jakarta.persistence.bean.manager" property is used to set CDI BeanManager when available
      See Also:
    • EXCEPTION_HANDLER_CLASS

      public static final String EXCEPTION_HANDLER_CLASS
      The "eclipselink.exception-handler" property allows an ExceptionHandler to be specified. An ExceptionHandler handles exceptions when they are thrown so that an application might address address expected failures and continue.
      See Also:
    • INCLUDE_DESCRIPTOR_QUERIES

      public static final String INCLUDE_DESCRIPTOR_QUERIES
      The "eclipselink.session.include.descriptor.queries" property configures whether to enable the copying of all descriptor named queries to the session to be usable from the entity manager.

      Default: "false".

      See Also:
    • SESSION_EVENT_LISTENER_CLASS

      public static final String SESSION_EVENT_LISTENER_CLASS
      The "eclipselink.session-event-listener" property configures a session event listener class.

      Use SESSION_CUSTOMIZER to configure multiple listeners using API.

      See Also:
    • SESSIONS_XML

      public static final String SESSIONS_XML
      The "eclipselink.sessions-xml" property configures the use of the specified native sessions.xml configuration file. When specified this file will load all of the session configuration and mapping information from the native XML. No JPA annotations or XML will be used.
      See Also:
    • PROJECT_CACHE

      public static final String PROJECT_CACHE
      The "eclipselink.project-cache" property configures the type of org.eclipse.persistence.jpa.metadata.ProjectCache implementation to use to retrieve and store projects representing the metadata for the project.

      Allowed Values:

      • "java-serialization" - use org.eclipse.persistence.jpa.metadata.FileBasedProjectCache
      • the fully qualified name for a class that implements org.eclipse.persistence.jpa.metadata.ProjectCache interface
      See Also:
    • PROJECT_CACHE_FILE

      public static final String PROJECT_CACHE_FILE
      The property "eclipselink.project-cache.java-serialization.file" specifies the name of the file to read/write a serialized project representing the application's metadata

      Specifies the name of the metadata repository xml file to read from using classloader to find the resource

      This property should be used in conjunction with "eclipselink.project-cache" when a project is serialized to a file for caching.

      See Also:
    • TEMPORAL_MUTABLE

      public static final String TEMPORAL_MUTABLE
      The "eclipselink.temporal.mutable" property configures the default for detecting changes to temporal field (Date, Calendar). Default "false" (changes to date object itself are not detected). By default it is assumed that temporal fields are replaced, and the temporal object not changed directly. Enabling mutable temporal fields will cause weaving of attribute change tracking to be disabled.
      See Also:
    • ALLOW_NATIVE_SQL_QUERIES

      public static final String ALLOW_NATIVE_SQL_QUERIES
      The "eclipselink.jdbc.allow-native-sql-queries" property specifies whether any user defined SQL is allowed within a persistence unit. This is of particular importance within a multitenant to minimize the potential impact of revealing multi tenant information. By default any persistence unit containing at least one multitenant entity will cause this flag to be set to "false".

      Allowed Values (String):

      • "false" - do not allow native SQL.
      • "true" (DEFAULT) - allow native SQL
      See Also:
    • ALLOW_ZERO_ID

      @Deprecated public static final String ALLOW_ZERO_ID
      Deprecated.
      replaced by ID_VALIDATION property with value "NULL".
      The "eclipselink.allow-zero-id" property configures if zero is considered a valid id on a new entity. If the id is not considered valid and sequencing is enabled for the entity a new value will be assigned when it is persisted to the database (INSERT). By default an id value of 0 is assumed to be null/unassigned. This allows 0 to be a valid id value. This can also be set per class using the PrimaryKey annotation and IdValidation.

      Caution: This property configures the static singleton on Helper.isZeroValidPrimaryKey which will be shared by all concurrent uses of EclipseLink.

      See Also:
    • ID_VALIDATION

      public static final String ID_VALIDATION
      The "eclipselink.id-validation" property defines which primary key components values are considered invalid. These values will be also overridden by sequencing. Note that Identity always overrides any existing id value and so does any sequence with Sequence.shouldAlwaysOverrideExistingValue() flag set to "true".
      See Also:
    • FLUSH_CLEAR_CACHE

      public static final String FLUSH_CLEAR_CACHE
      The "eclipselink.flush-clear.cache" property defines EntityManager cache behavior after a call to flush method followed by a call to clear method. This property could be specified while creating either EntityManagerFactory (either in the map passed to createEntityManagerFactory method or in persistence.xml) or EntityManager (in the map passed to createEntityManager method); the latter overrides the former.
      See Also:
    • CLASSLOADER

      public static final String CLASSLOADER
      The "eclipselink.classloader" property specifies the classloader to use to create an EntityManagerFactory in the property map passed to Persistence.createEntityManagerFactory.
      See Also:
    • THROW_EXCEPTIONS

      public static final String THROW_EXCEPTIONS
      The "eclipselink.orm.throw.exceptions" property specifies if the first exception that occurs during deployment should be thrown, or if all exceptions should be caught and summary thrown at end of deployment attempt.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • ORM_SCHEMA_VALIDATION

      public static final String ORM_SCHEMA_VALIDATION
      The "eclipselink.orm.validate.schema" property set on the session is used to override orm.xml schema validation from its default of "false".
      See Also:
    • DEPLOY_ON_STARTUP

      public static final String DEPLOY_ON_STARTUP
      The "eclipselink.deploy-on-startup" property controls whether EclipseLink creates the persistence unit when the application starts up, or when the persistence unit is first actually accessed by the application.

      Setting this to "true" causes the persistence unit to be created when the EntityManagerFactory is created, usually during deployment to a Java EE 7 container or servlet container. Enabling this option may increase startup time of the container/server, but will prevent the first request to the application from pausing while the persistence unit is deployed.

      When this property is set to "false" the persistence unit is not initialized until the first EntityManager is created or until metadata is requested from the EntityManagerFactory.

      When set to "false", there is a known issue with Fields of static metamodel classes ("Entity_" classes) being null until the persistence unit is initialized. This behaviour won't affect applications unless they use the static metamodel feature. (See bug 383199)

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • VALIDATION_ONLY_PROPERTY

      public static final String VALIDATION_ONLY_PROPERTY
      The "eclipselink.validation-only" property validates deployment which includes initializing descriptors but does not connect (no login to the database).

      Note: "eclipselink.target-database" must be specified with a non-"Auto" class name or short name when "eclipselink.validation-only" is set to "true".

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • DDL_GENERATION

      public static final String DDL_GENERATION
      The "eclipselink.ddl-generation" property allows the database schema to be generated on deployment.

      Allowed Values:

      See Also:
    • CREATE_ONLY

      public static final String CREATE_ONLY
      The parameter value "create-tables" specifies that database tables should be created.

      For use with the "eclipselink.ddl-generation" property.

      See Also:
    • DROP_ONLY

      public static final String DROP_ONLY
      The parameter value "drop-tables" specifies that database tables should be dropped only.

      For use with the "eclipselink.ddl-generation" property.

      See Also:
    • DROP_AND_CREATE

      public static final String DROP_AND_CREATE
      The parameter value "drop-and-create-tables" specifies that database tables should be dropped, then created.

      For use with the "eclipselink.ddl-generation" property.

      See Also:
    • CREATE_OR_EXTEND

      public static final String CREATE_OR_EXTEND
      The parameter value "create-or-extend-tables" specifies that database tables should be created and if existing, missing columns will be added.

      For use with the "eclipselink.ddl-generation" property.

      Note this can only be used with "eclipselink.ddl-generation.output-mode" with value of "database".

      See Also:
    • NONE

      public static final String NONE
      The parameter value "none" specifies that database tables should not be created or dropped.

      For use with the "eclipselink.ddl-generation" property, and is the default parameter value.

      See Also:
    • METADATA_SOURCE

      public static final String METADATA_SOURCE
      The "eclipselink.metadata-source"property configures the type of MetadataSource implementation to use to read Metadata

      Allowed Values:

      • "XML" - use org.eclipse.persistence.jpa.metadata.XMLMetadataSource
      • the fully qualified name for a class that implements org.eclipse.persistence.jpa.metadata.MetadataSource interface
      See Also:
      • "org.eclipse.persistence.jpa.metadata.MetadataSource"
      • "org.eclipse.persistence.jpa.metadata.XMLMetadataSource"
      • Constant Field Values
    • METADATA_SOURCE_RCM_COMMAND

      public static final String METADATA_SOURCE_RCM_COMMAND
      The "eclipselink.metadata-source.send-refresh-command" property works with cache coordination for a clustered environment to. If cache coordination is configured and the session is deployed on startup, this property controls the sending of RCM refresh metadata commands to the cluster. These commands will cause the remote instances to refresh their metadata.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • METADATA_SOURCE_XML_FILE

      public static final String METADATA_SOURCE_XML_FILE
      The property "eclipselink.metadata-source.xml.file" specifies the name of the metadata repository xml file to read from using classloader to find the resource

      This property should be used in conjunction with the "eclipselink.metadata-repository" when an XML repository is being used.

      See Also:
    • METADATA_SOURCE_XML_URL

      public static final String METADATA_SOURCE_XML_URL
      The property "eclipselink.metadata-source.xml.URL" specifies the name of the metadata repository xml URL to read from.

      This property should be used in conjunction with the "eclipselink.metadata-repository" when an XML repository is being used.

      See Also:
    • METADATA_SOURCE_PROPERTIES_FILE

      public static final String METADATA_SOURCE_PROPERTIES_FILE
      The property "eclipselink.metadata-source.properties.file" specifies the name of the metadata repository properties file to read from using classloader to find the resource.
      See Also:
    • APP_LOCATION

      public static final String APP_LOCATION
      The property "eclipselink.application-location" specifies the file system directory location where DDL files are written (output) to.

      This property should be used in conjunction with the "eclipselink.ddl-generation.output-mode" property, with a setting of "sql-script" (or "both") for DDL file(s) to be written.

      See Also:
    • CREATE_JDBC_DDL_FILE

      public static final String CREATE_JDBC_DDL_FILE
      The property "eclipselink.create-ddl-jdbc-file-name" specifies the name of the DDL file which is used to create database tables.

      This property should be used in conjunction with the "eclipselink.application-location" property to specify a location on the file system for DDL file(s) to be written.

      See Also:
    • DROP_JDBC_DDL_FILE

      public static final String DROP_JDBC_DDL_FILE
      The property "eclipselink.drop-ddl-jdbc-file-name" specifies the name of the DDL file which is used to drop database tables.

      This property should be used in conjunction with the "eclipselink.application-location" property to specify a location on the file system for DDL file(s) to be written.

      See Also:
    • DEFAULT_APP_LOCATION

      public static final String DEFAULT_APP_LOCATION
      The default location in the file system to output DDL files.

      Defaults to: the working directory.

      See Also:
    • DEFAULT_CREATE_JDBC_FILE_NAME

      public static final String DEFAULT_CREATE_JDBC_FILE_NAME
      The default name of the DDL file which is used to create database tables.

      Defaults to: createDDL.jdbc

      See Also:
    • DEFAULT_DROP_JDBC_FILE_NAME

      public static final String DEFAULT_DROP_JDBC_FILE_NAME
      The default name of the DDL file which is used to drop database tables.

      Defaults to: dropDDL.jdbc

      See Also:
    • JAVASE_DB_INTERACTION

      public static final String JAVASE_DB_INTERACTION
      The system property "INTERACT_WITH_DB" specifies to enable or disable the execution of DDL (configured with the "eclipselink.ddl-generation" property) against a database.

      e.g. a command line setting of -DINTERACT_WITH_DB=false will not output DDL to the database.

      Allowed Values:

      • "false" - do not output DDL to the database
      • "true" - output DDL to the database
      See Also:
    • DDL_GENERATION_MODE

      public static final String DDL_GENERATION_MODE
      The "eclipselink.ddl-generation.output-mode" property specifies if database schema should be generated on the database, to a file, or both.

      Note DDL_GENERATION must also be set, for this to have an effect.

      Allowed Values:

      See Also:
    • DDL_GENERATION_INDEX_FOREIGN_KEYS

      public static final String DDL_GENERATION_INDEX_FOREIGN_KEYS
      The "eclipselink.ddl-generation.index-foreign-keys" property specifies if an index should be automatically generated for foreign key constraints. It is normally recommended to have an index for a foreign key.

      By default indexes are not generated, most database also do not auto generate indexes, although some do.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • DDL_SQL_SCRIPT_GENERATION

      public static final String DDL_SQL_SCRIPT_GENERATION
      The parameter value "sql-script" specifies that DDL will be written to file(s).

      For use with the "eclipselink.ddl-generation.output-mode" property.

      See Also:
    • DDL_DATABASE_GENERATION

      public static final String DDL_DATABASE_GENERATION
      The parameter value "database" specifies that DDL will be written to the database.

      For use with the "eclipselink.ddl-generation.output-mode" property, and is the default parameter value

      See Also:
    • DDL_BOTH_GENERATION

      public static final String DDL_BOTH_GENERATION
      The parameter value "both" specifies that DDL will be written to file(s) and the database.

      For use with the "eclipselink.ddl-generation.output-mode" property.

      See Also:
    • DEFAULT_DDL_GENERATION_MODE

      public static final String DEFAULT_DDL_GENERATION_MODE
      The eclipselink.ddl-generation.output-mode parameter is configured to the default value of database.
      See Also:
    • VALIDATE_EXISTENCE

      public static final String VALIDATE_EXISTENCE
      The "eclipselink.validate-existence" property configures if the existence of an object should be verified on persist(), otherwise it will assume to be new if not in the persistence context. If checked and existing and not in the persistence context and error will be thrown.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • ORDER_UPDATES

      @Deprecated public static final String ORDER_UPDATES
      Deprecated.
      as of EclipseLink 2.6 replaced by PERSISTENCE_CONTEXT_COMMIT_ORDER
      The "eclipselink.order-updates" property configures if updates should be ordered by primary key.

      This can be used to avoid possible database deadlocks from concurrent threads updating the same objects in a different order. If not set to true, the order of updates is not guaranteed.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • PERSISTENCE_CONTEXT_COMMIT_ORDER

      public static final String PERSISTENCE_CONTEXT_COMMIT_ORDER
      The "eclipselink.persistence-context.commit-order" property defines the ordering of updates and deletes of a set of the same entity type during a commit or flush operation. The commit order of entities is defined by their foreign key constraints, and then sorted alphabetically.

      By default the commit of a set of the same entity type is ordered by its Id.

      Entity type commit order can be modified using a DescriptorCustomizer and the ClassDescriptor.addConstraintDependency(Class) API. Commit order can also be controlled using the EntityManager.flush() API.

      Allowed Values:

      • "Id" (DEFAULT) - updates and deletes are ordered by the object's id. This can help avoid deadlocks on highly concurrent systems.
      • "Changes" - updates are ordered by the object's changes, then by id. This can improve batch writing efficiency.
      • "None" - no ordering is done.
      See Also:
    • PROFILER

      public static final String PROFILER
      The "eclipselink.profiler" property configures the type of profiler used to capture runtime statistics.

      Allowed Values:

      • "NoProfiler" (DEFAULT)
      • "PerformanceMonitor" - use PerformanceMonitor
      • "PerformanceProfiler" - use PerformanceProfiler
      • "QueryMonitor" - use QueryMonitor
      • "DMSProfiler" - use org.eclipse.persistence.tools.profiler.oracle.DMSPerformanceProfiler
      • the fully qualified name for a class that implements SessionProfiler interface
      See Also:
    • TUNING

      public static final String TUNING
      The "eclipselink.tuning"property configures the type of tuner to use to configure the persistence unit.

      A SessionTuner can be used to define a template for a persistence unit configuration. It allows a set of configuration values to be configured as a single tuning option.

      Allowed Values:

      • "Standard" (DEFAULT)
      • "Safe" - see SafeModeTuner
      • Custom tuner - specify a full class name of an implementation of SessionTuner
      See Also:
    • FREE_METADATA

      public static final String FREE_METADATA
      The "eclipselink.memory.free-metadata" property configures the JPA internal deployment metadata to be released after deployment. This conserves memory, as the metadata is no longer required, but make future deployments of any other application take longer, as the metadata must be re-allocated.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • JOIN_EXISTING_TRANSACTION

      public static final String JOIN_EXISTING_TRANSACTION
      The "eclipselink.transaction.join-existing" property set to "true" forces persistence context to read through JTA-managed ("write") connection in case there is an active transaction.

      Note that if the property set to "true" then objects read during transaction won't be placed into the shared cache unless they have been updated.

      The property set in persistence.xml or passed to createEntityManagerFactory affects all EntityManagers created by the factory. Alternatively, to apply the property only to some EntityManagers pass it to createEntityManager method.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • PERSISTENCE_CONTEXT_REFERENCE_MODE

      public static final String PERSISTENCE_CONTEXT_REFERENCE_MODE
      The "eclipselink.persistence-context.reference-mode" property configures whether there should be hard or soft references used within the Persistence Context. Default is "HARD". With soft references entities no longer referenced by the application may be garbage collected freeing resources. Any changes that have not been flushed in these entities will be lost.

      The property set in persistence.xml or passed to createEntityManagerFactory affects all EntityManagers created by the factory. Alternatively, to apply the property only to some EntityManagers pass it to createEntityManager method.

      Allowed Values:

      See Also:
    • PESSIMISTIC_LOCK_TIMEOUT

      public static final String PESSIMISTIC_LOCK_TIMEOUT
      The "jakarta.persistence.lock.timeout" property configures the WAIT timeout used in pessimistic locking, if the database query exceeds the timeout the database will terminate the query and return an exception.

      Allowed Values:

      • a string containing a zero or greater integer value
      See Also:
    • PESSIMISTIC_LOCK_TIMEOUT_UNIT

      public static final String PESSIMISTIC_LOCK_TIMEOUT_UNIT
      The "eclipselink.pessimistic.lock.timeout.unit" property configures the query timeout unit value. Allows users more refinement. Used in combination with PersistenceUnitProperties.PESSIMISTIC_LOCK_TIMEOUT

      Allowed Values:

      • "java.util.concurrent.TimeUnit.MILLISECONDS" (DEFAULT),
      • "java.util.concurrent.TimeUnit.SECONDS",
      • "java.util.concurrent.TimeUnit.MINUTES".
      See Also:
    • QUERY_TIMEOUT

      public static final String QUERY_TIMEOUT
      The "jakarta.persistence.query.timeout" property configures the default query timeout value. Defaults to milliseconds, but is configurable with PersistenceUnitProperties.QUERY_TIMEOUT_UNIT

      Allowed Values:

      • a string containing a zero or greater integer value
      See Also:
    • QUERY_TIMEOUT_UNIT

      public static final String QUERY_TIMEOUT_UNIT
      The "eclipselink.query.timeout.unit" property configures the query timeout unit value. Allows users more refinement. Used in combination with PersistenceUnitProperties.QUERY_TIMEOUT

      Allowed Values:

      • "java.util.concurrent.TimeUnit.MILLISECONDS" (DEFAULT),
      • "java.util.concurrent.TimeUnit.SECONDS",
      • "java.util.concurrent.TimeUnit.MINUTES".
      See Also:
    • PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT

      public static final String PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT
      The "eclipselink.persistence-context.close-on-commit" property specifies that the EntityManager will be closed or not used after commit (not extended). In general this is normally always the case for a container managed EntityManager, and common for application managed. This can be used to avoid additional performance overhead of resuming the persistence context after a commit().

      The property set in persistence.xml or passed to createEntityManagerFactory affects all EntityManagers created by the factory. Alternatively, to apply the property only to some EntityManagers pass it to createEntityManager method.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • PERSISTENCE_CONTEXT_PERSIST_ON_COMMIT

      public static final String PERSISTENCE_CONTEXT_PERSIST_ON_COMMIT
      The "eclipselink.persistence-context.persist-on-commit" property specifies that the EntityManager will search all managed objects and persist any related non-managed new objects that are cascade persist. This can be used to avoid the cost of performing this search if persist is always used for new objects.

      The property set in persistence.xml or passed to createEntityManagerFactory affects all EntityManagers created by the factory. Alternatively, to apply the property only to some EntityManagers pass it to createEntityManager method.

      Allowed Values:

      • "false"
      • "true" (DEFAULT)
      See Also:
    • PERSISTENCE_CONTEXT_COMMIT_WITHOUT_PERSIST_RULES

      public static final String PERSISTENCE_CONTEXT_COMMIT_WITHOUT_PERSIST_RULES
      The "eclipselink.persistence-context.commit-without-persist-rules" property specifies that the EntityManager will search all managed objects and persist any related non-managed new objects that are found ignoring any absence of CascadeType.PERSIST settings. Also the Entity life-cycle Persist operation will not be cascaded to related entities. This setting replicates the traditional EclipseLink native functionality.

      Allowed Values:

      • "false" (DEFAULT)
      • "true"
      See Also:
    • PERSISTENCE_CONTEXT_FLUSH_MODE

      public static final String PERSISTENCE_CONTEXT_FLUSH_MODE
      The "eclipselink.persistence-context.flush-mode" property configures the EntityManager FlushMode to be set as a persistence property. This can be set to either "AUTO" or "COMMIT".

      By default the flush mode is "AUTO", which requires an automatic flush before all query execution. This can be used to avoid any flushing until commit.

      The property set in persistence.xml or passed to createEntityManagerFactory affects all EntityManagers created by the factory. Alternatively, to apply the property only to some EntityManagers pass it to createEntityManager method.

      See Also:
    • ORACLE_PROXY_TYPE

      public static final String ORACLE_PROXY_TYPE
      The "eclipselink.oracle.proxy-type" property is used to specify proxy type that should be passed to OracleConnection.openProxySession method. Requires Oracle JDBC version 10.1.0.2 or later. Requires Oracle9Platform or later as a database platform (TARGET_DATABASE property value should be TargetDatabase.Oracle9 or later).

      Values:

      • oracle.jdbc.OracleConnection.PROXYTYPE_USER_NAME,
      • oracle.jdbc.OracleConnection.PROXYTYPE_DISTINGUISHED_NAME,
      • oracle.jdbc.OracleConnection.PROXYTYPE_CERTIFICATE.

      Property values corresponding to the specified type should be also provided:

      • oracle.jdbc.OracleConnection.PROXY_USER_NAME,
      • oracle.jdbc.OracleConnection.PROXY_DISTINGUISHED_NAME,
      • oracle.jdbc.OracleConnection.PROXY_CERTIFICATE.

      Typically these properties should be set into EntityManager (either through createEntityManager method or using proprietary setProperties method on EntityManagerImpl) - that causes EntityManager to use proxy connection for writing and reading inside transaction. If proxy-type and the corresponding proxy property set into EntityManagerFactory then all connections created by the factory will be proxy connections.

      See Also:
    • COORDINATION_PROTOCOL

      public static final String COORDINATION_PROTOCOL
      The "eclipselink.cache.coordination.protocol" property configures cache coordination for a clustered environment. This needs to be set on every persistence unit/session in the cluster. Depending on the cache configuration for each descriptor, this will broadcast cache updates or inserts to the cluster to update or invalidate each session's cache.

      Default: the cache is not coordinated.

      Allowed Values:

      • "jms"
      • "jms-publishing"
      • "rmi"
      • "rmi-iiop"
      • "jgroups"
      • the fully qualified name for a class that extends TransportManager abstract class.
      See Also:
    • COORDINATION_JGROUPS_CONFIG

      public static final String COORDINATION_JGROUPS_CONFIG
      The "eclipselink.cache.coordination.jgroups.config" property configures cache coordination for a clustered environment.

      Only used for JGroups coordination.

      Sets the JGroups config XML file location.
      If not set the default JGroups config will be used.

      See Also:
    • COORDINATION_JMS_HOST

      public static final String COORDINATION_JMS_HOST
      The "eclipselink.cache.coordination.jms.host" property configures cache coordination for a clustered environment.

      Only used for JMS coordination.

      Sets the URL for the JMS server hosting the topic.
      This is not required in the topic is distributed across the cluster (can be looked up in local JNDI).

      See Also:
    • COORDINATION_JMS_TOPIC

      public static final String COORDINATION_JMS_TOPIC
      The "eclipselink.cache.coordination.jms.topic" property configures cache coordination for a clustered environment.

      Only used for JMS coordination.

      Sets the JMS topic name.
      The default topic JNDI name is "jms/EclipseLinkTopic".

      See Also:
    • COORDINATION_JMS_FACTORY

      public static final String COORDINATION_JMS_FACTORY
      The "eclipselink.cache.coordination.jms.factory" property configures cache coordination for a clustered environment.

      Only used for JMS coordination.

      Sets the JMS topic connection factory name.
      The default topic connection factory JNDI name is "jms/EclipseLinkTopicConnectionFactory".

      See Also:
    • COORDINATION_JMS_REUSE_PUBLISHER

      public static final String COORDINATION_JMS_REUSE_PUBLISHER
      The "eclipselink.cache.coordination.jms.reuse-topic-publisher" property configures cache coordination for a clustered environment.

      Only used for JMS coordination.

      Sets the JSM transport manager to cache a TopicPublisher and reuse it for all cache coordination publishing.
      Default value if unset is false.

      See Also:
    • COORDINATION_RMI_ANNOUNCEMENT_DELAY

      public static final String COORDINATION_RMI_ANNOUNCEMENT_DELAY
      The "eclipselink.cache.coordination.rmi.announcement-delay" property configures cache coordination for a clustered environment.

      Only used for RMI coordination.

      Sets the number of milliseconds to wait for announcements from other cluster members on startup.
      Default is 1000 milliseconds.

      See Also:
    • COORDINATION_RMI_MULTICAST_GROUP

      public static final String COORDINATION_RMI_MULTICAST_GROUP
      The "eclipselink.cache.coordination.rmi.multicast-group" property configures cache coordination for a clustered environment.

      Only used for RMI coordination.

      Sets the multicast socket group address. The multicast group is used to find other members of the cluster.
      The default address is 239.192.0.0.

      See Also:
    • COORDINATION_RMI_MULTICAST_GROUP_PORT

      public static final String COORDINATION_RMI_MULTICAST_GROUP_PORT
      The "eclipselink.cache.coordination.rmi.multicast-group.port" property configures cache coordination for a clustered environment.

      Only used for RMI coordination.

      Sets the multicast socket group port. The multicast group port is used to find other members of the cluster.
      The default port is 3121.

      See Also:
    • COORDINATION_RMI_PACKET_TIME_TO_LIVE

      public static final String COORDINATION_RMI_PACKET_TIME_TO_LIVE
      The "eclipselink.cache.coordination.rmi.packet-time-to-live" property configures cache coordination for a clustered environment.

      Only used for RMI coordination.

      Sets the multicast socket packet time to live.
      The multicast group is used to find other members of the cluster. Set the number of hops the data packets of the session announcement will take before expiring.
      The default is 2, a hub and an interface card to prevent the data packets from leaving the local network.

      Note that if sessions are hosted on different LANs that are part of WAN, the announcement sending by one session may not reach other sessions. In this case, consult your network administrator for the right time-to-live value or test your network by increase the value until sessions receive announcement sent by others.

      See Also:
    • COORDINATION_RMI_URL

      public static final String COORDINATION_RMI_URL
      The "eclipselink.cache.coordination.rmi.url" property configures cache coordination for a clustered environment.

      Only used for RMI coordination.

      Sets the URL of the host server.
      This is the URL that other cluster member should use to connect to this host. This may not be required in a clustered environment where JNDI is replicated.
      This can also be set as a System property or using a SessionCustomizer to avoid a separate persistence.xml per server.

      See Also:
    • COORDINATION_NAMING_SERVICE

      public static final String COORDINATION_NAMING_SERVICE
      The "eclipselink.cache.coordination.naming-service" property configures cache coordination for a clustered environment.

      Set the naming service to use, either "jndi" or "rmi".

      Allowed Values:

      • "jndi"
      • "rmi"
      See Also:
    • COORDINATION_JNDI_USER

      public static final String COORDINATION_JNDI_USER
      The "eclipselink.cache.coordination.jndi.user" property configures cache coordination for a clustered environment.

      Set the JNDI naming service user name.
      This is not normally require if connecting to the local server.

      See Also:
    • COORDINATION_JNDI_PASSWORD

      public static final String COORDINATION_JNDI_PASSWORD
      The "eclipselink.cache.coordination.jndi.password" property configures cache coordination for a clustered environment.

      Set the JNDI naming service user name.
      This is not normally require if connecting to the local server.

      See Also:
    • COORDINATION_JNDI_CONTEXT

      public static final String COORDINATION_JNDI_CONTEXT
      The "eclipselink.cache.coordination.jndi.initial-context-factory" property configures cache coordination for a clustered environment.

      Set the JNDI InitialContext factory.
      This is not normally require if connecting to the local server.

      See Also:
    • COORDINATION_REMOVE_CONNECTION

      public static final String COORDINATION_REMOVE_CONNECTION
      The "eclipselink.cache.coordination.remove-connection-on-error" property configures cache coordination for a clustered environment.

      Set if the connection should be removed if a communication error occurs when coordinating with it.
      This is normally used for RMI coordination in case a server goes down (it will reconnect when it comes back up).

      See Also:
    • COORDINATION_ASYNCH

      public static final String COORDINATION_ASYNCH
      The "eclipselink.cache.coordination.propagate-asynchronously" property configures cache coordination for a clustered environment.

      Set if the coordination broadcast should occur asynchronously with the committing thread. This means the coordination will be complete before the thread returns from the commit of the transaction.
      Note that JMS is always asynchronous. By default RMI is asynchronous.

      See Also:
    • COORDINATION_THREAD_POOL_SIZE

      public static final String COORDINATION_THREAD_POOL_SIZE
      The "eclipselink.cache.coordination.thread.pool.size" property configures thread pool size for cache coordination threads.

      RMI cache coordination will spawn one thread per node to send change notifications. RMI also spawns a thread to listen for new node notifications.

      JMS cache coordination will spawn one thread to receive JMS change notification messages (unless MDB is used). JMS also spawns a thread to process the change notificaiton (unless MDB is used).

      The default size is 32 threads.

      A size of 0 indicates no thread pool should be used, and threads will be spawned when required.

      See Also:
    • COORDINATION_SERIALIZER

      public static final String COORDINATION_SERIALIZER
      The "eclipselink.cache.coordination.serializer" property configures how cache coordination serializes message sent between nodes.

      By default Java serialization is used. Other serializer can be used for improved performance or integration with other systems.

      The full class name of the serializer class should be provided.

      See Also:
    • COORDINATION_CHANNEL

      public static final String COORDINATION_CHANNEL
      The "eclipselink.cache.coordination.channel" property configures cache coordination for a clustered environment.

      Set the channel for this cluster. All server's in the same channel will be coordinated.
      The default channel name is "EclipseLinkCommandChannel".
      If multiple EclipseLink deployment reside on the same network, they should use different channels.

      See Also:
    • COMPOSITE_UNIT

      public static final String COMPOSITE_UNIT
      The "eclipselink.composite-unit" property indicates if it's a composite persistence unit ("true").

      The property must be specified in persistence.xml of a composite persistence unit. The property passed to createEntityManagerFactory method or in system properties is ignored.

      Composite persistence unit would contain all persistence units found in jar files specified by <jar-file> elements in persistence.xml.

      Persistence XML example:

       <jar-file>member1.jar</jar-file>
        <jar-file>member2.jar</jar-file>
        <properties>
          <property name="eclipselink.composite-unit" value="true"/>
        </properties>
      See Also:
    • COMPOSITE_UNIT_MEMBER

      public static final String COMPOSITE_UNIT_MEMBER
      The "eclipselink.composite-unit.member" property indicates if the persistence unit must be a member of a composite persistence unit ("true"), can't be used as an independent persistence unit. That happens if persistence unit has dependencies on other persistence unit(s).

      The property may be specified in persistence.xml. The property passed to createEntityManagerFactory method or in system properties is ignored.

      If this property is set to "true", EntityManagerFactory still could be created, but it can't be connected: an attempt to create entity manager would cause an exception.

      See Also:
    • COMPOSITE_UNIT_PROPERTIES

      public static final String COMPOSITE_UNIT_PROPERTIES
      The "eclipselink.composite-unit.properties" property may be passed to createEntityManagerFactory method of a composite persistence unit to pass properties to member persistence units.

      The value is a map:
        the key is a member persistence unit's name,
        the value is a map of properties to be passed to this persistence unit.

       "eclipselink.composite-unit.properties" -> (
          ("memberPu1" -> (
             "jakarta.persistence.jdbc.user" -> "user1",
             "jakarta.persistence.jdbc.password" -> "password1",
             "jakarta.persistence.jdbc.driver" -> "oracle.jdbc.OracleDriver",
             "jakarta.persistence.jdbc.url" -> "jdbc:oracle:thin:@oracle_db_url:1521:db"
          ),
          ("memberPu2" -> (
             "jakarta.persistence.jdbc.user" -> "user2",
             "jakarta.persistence.jdbc.password" -> "password2",
             "jakarta.persistence.jdbc.driver" -> "com.mysql.jdbc.Driver",
             "jakarta.persistence.jdbc.url" -> "jdbc:mysql://my_sql_db_url:3306/user2"
          )
        )
      See Also:
    • REMOTE_PROTOCOL

      public static final String REMOTE_PROTOCOL
      The "eclipselink.remote.protocol" property configures remote JPA for a client or server. This allows JPA to be access over RMI or other protocol from a remote Java client.

      Allowed Values:

      • "rmi"
      • the fully qualified name for a class that extends RemoteConnection abstract class
      See Also:
    • REMOTE_URL

      public static final String REMOTE_URL
      The "eclipselink.remote.client.url" property configures remote JPA for a client. This allows JPA to be access over RMI or other protocol from a remote Java client.

      The URL is the complete URL used to access the RMI server.

      See Also:
    • REMOTE_SERVER_NAME

      public static final String REMOTE_SERVER_NAME
      The "eclipselink.remote.server.name" property configures remote JPA for a server. This allows JPA to be access over RMI or other protocol from a remote Java client.

      The name is the name the server will be registered under in the RMI registry.

      See Also:
    • NOSQL_CONNECTION_SPEC

      public static final String NOSQL_CONNECTION_SPEC
      The "eclipselink.nosql.connection-spec" property allows the connection information for an NoSQL or EIS datasource to be specified.

      An NoSQL datasource is a non-relational datasource such as a legacy database, NoSQL database, XML database, transactional and messaging systems, or ERP systems.

      See Also:
    • NOSQL_CONNECTION_FACTORY

      public static final String NOSQL_CONNECTION_FACTORY
      The "eclipselink.nosql.connection-factory" property allows the JCA ConnectionFactory to be specified for a NoSQL or EIS adapter.

      An NoSQL datasource is a non-relational datasource such as a legacy database, NoSQL database, XML database, transactional and messaging systems, or ERP systems.

      See Also:
    • NOSQL_PROPERTY

      public static final String NOSQL_PROPERTY
      The "eclipselink.nosql.property." property prefix allows setting NoSQL connection properties. The NoSQL specific property name should be appended to this prefix.

      i.e. "eclipselink.nosql.property.nosql.host"="localhost:5000"

      See Also:
    • NOSQL_USER

      public static final String NOSQL_USER
      The "eclipselink.nosql.property.user" property specifies user name for NoSQL connection.
      Note that "jakarta.persistence.jdbc.user" is also supported.
      See Also:
    • NOSQL_PASSWORD

      public static final String NOSQL_PASSWORD
      The "eclipselink.nosql.property.password" property specifies password for NoSQL connection.
      Note that "jakarta.persistence.jdbc.password" is also supported.
      See Also:
    • JDBC_CONNECTOR

      public static final String JDBC_CONNECTOR
      The "eclipselink.jdbc.connector" property.
      Allows a custom connector to be used to define how to connect to the database. This is not required if a DataSource or JDBC DriverManager is used. It can be used to connect to a non standard connection pool, or provide additional customization in how a connection is obtained.
      See Also:
    • JDBC_PROPERTY

      public static final String JDBC_PROPERTY
      The "eclipselink.jdbc.property." property allows passing of JDBC driver specific connection properties. This allows for properties to be set on the JDBC connection. The JDBC driver specific property name should be appended to this prefix.

      i.e.
      "eclipselink.jdbc.property.defaultRowPrefetch"="25"

      See Also:
    • JDBC_RESULT_SET_ACCESS_OPTIMIZATION

      public static final String JDBC_RESULT_SET_ACCESS_OPTIMIZATION
      The "eclipselink.jdbc.result-set-access-optimization" property allows to set whether a query should by default use ResultSet Access optimization.

      The optimization allows to avoid getting objects from ResultSet if the cached object used. For instance, SELECT id, blob FROM .. with optimization would extract only "id" from ResultSet, and if there is a corresponding cached object and it's not a refresh query, "blob" would never be extracted. The draw back is keeping ResultSet and connection longer: until objects are built (or extracted from cache) for all rows and all eager references (direct and nested) for each row. Note that the optimization would not be used if it contradicts other query settings.

      Allowed Values (String):

      • "false" - don't use optimization
      • "true" - use optimization

      Default value is ObjectLevelReadQuery.isResultSetAccessOptimizedQueryDefault = false;

      See Also:
    • SERIALIZER

      public static final String SERIALIZER
      The "eclipselink.serializer" property specifies class name for session serializer (must implement Serializer)

      Default value is "org.eclipse.persistence.sessions.serializers.JavaSerializer"

      See Also:
    • JPQL_TOLERATE

      public static final String JPQL_TOLERATE
      The "eclipselink.tolerate-invalid-jpql" property allows an EntityManager to be created even in the event that an application has invalid JPQL statements declared in annotations or xml.

      Allowed Values (String):

      • "false" (DEFAULT)
      • "true"
      See Also:
    • USE_LOCAL_TIMESTAMP

      public static final String USE_LOCAL_TIMESTAMP
      The "eclipselink.locking.timestamp.local" property defines if locking policies should default to local time(true) or server time(false).

      Allowed Values (String):

      • "false" (DEFAULT)
      • "true"
      See Also:
    • SQL_CALL_DEFERRAL

      public static final String SQL_CALL_DEFERRAL
      The "eclipselink.jpa.sqlcall.deferral.default" property defines if SQL calls should be deferred to end of transaction by default or not. When setting this property to false, the application assumes the responsibility of ordering the SQL statements and must therefore be aware of any interdependencies between entities.

      Allowed Values (String):

      • "true" (DEFAULT)
      • "false"
      See Also:
    • NAMING_INTO_INDEXED

      public static final String NAMING_INTO_INDEXED
      The "eclipselink.jpa.naming_into_indexed" property defines if stored procedure parameters passed by name should be transformed into positional/index based passing if property value will be true. e.g. For stored procedure: CREATE PROCEDURE test_stored_proc1( IN param1 TEXT, IN param2 INTEGER ) following Java call query.registerStoredProcedureParameter( "param1",Integer.class,ParameterMode.IN ); query.registerStoredProcedureParameter( "param2",String.class,ParameterMode.IN ); will be transformed into following e.g. {call test_stored_proc1(10, 'abcd')} instead of default {call test_stored_proc1(param1 => 10, param2 => 'abcd')} It's important to register parameters in Java in a same order as they specified in the stored procedure. This code was added there to ensure backward compatibility with older EclipseLink releases.

      Allowed Values (String):

      • "false" (DEFAULT)
      • "true"
      See Also:
    • CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME

      public static final String CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how much time loop wait before it try acquire lock for current thread again. It value is set above above 0 dead lock detection mechanism and related extended logging will be activated. Default value is 0 (unit is ms). Allowed values are: long
      See Also:
    • CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME

      public static final String CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how much time ConcurrencyManager will wait before it will identify, that thread which builds new object/entity instance should be identified as a potential dead lock source. It leads into some additional log messages. Default value is 0 (unit is ms). In this case extended logging is not active. Allowed values are: long
      See Also:
    • CONCURRENCY_MANAGER_MAX_SLEEP_TIME

      public static final String CONCURRENCY_MANAGER_MAX_SLEEP_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how long we are willing to wait before firing up an exception Default value is 40000 (unit is ms). Allowed values are: long
      See Also:
    • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE

      public static final String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil. It control how frequently the tiny dump log message is created. Default value is 40000 (unit is ms). Allowed values are: long
      See Also:
    • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE

      public static final String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil. It control how frequently the massive dump log message is created. Default value is 60000 (unit is ms). Allowed values are: long
      See Also:
    • CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION

      public static final String CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION

      This property control (enable/disable) if InterruptedException fired when dead-lock diagnostic is enabled.

      Allowed Values (case sensitive String):

      • "false" - if aborting frozen thread is not effective it is preferable to not fire the interrupted exception let the system In the places where use this property normally if a thread is stuck it is because it is doing object building. Blowing the threads ups is not that dangerous. It can be very dangerous for production if the dead lock ends up not being resolved because the productive business transactions will become cancelled if the application has a limited number of retries to for example process an MDB. However, the code spots where we use this constant are not as sensible as when the write lock manager is starving to run commit.
      • "true" (DEFAULT) - if we want the to fire up an exception to try to get the current thread to release all of its acquired locks and allow other threads to progress.
      See Also:
    • CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION

      public static final String CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION

      This property control (enable/disable) if ConcurrencyException fired when dead-lock diagnostic is enabled.

      Allowed Values (case sensitive String):

      • "false" - if aborting frozen thread is not effective it is preferable to not fire the concurrency exception let the system freeze and die and force the administration to kill the server. This is preferable to aborting the transactions multiple times without success in resolving the dead lock and having business critical messages that after 3 JMS retries are discarded out. Failing to resolve a dead lock can have terrible impact in system recovery unless we have infinite retries for the business transactions.
      • "true" (DEFAULT) - if we want the to fire up an exception to try to get the current thread to release all of its acquired locks and allow other threads to progress.
      See Also:
    • CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK

      public static final String CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK

      This property control (enable/disable) collection debug/trace information during ReadLock acquisition, when dead-lock diagnostic is enabled.

      Allowed Values (case sensitive String):

      • "false" (DEFAULT) - don't collect debug/trace information during ReadLock acquisition
      • "true" - collect debug/trace information during ReadLock acquisition. Has negative impact to the performance.
      See Also:
    • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING

      public static final String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING

      This property control (enable/disable) semaphore in ObjectBuilder

      Object building see ObjectBuilder could be one of the primary sources pressure on concurrency manager. Most of the cache key acquisition and releasing is taking place during object building. Enable true this property to try reduce the likelihood of having dead locks is to allow less threads to start object building in parallel. In this case there should be negative impact to the performance. Note: Parallel access to the same entity/entity tree from different threads is not recommended technique in EclipseLink.
      • "true" - means we want to override vanilla behavior and use a semaphore to not allow too many threads in parallel to do object building
      • "false" (DEFAULT) - means just go ahead and try to build the object without any semaphore (false is vanilla behavior).
      See Also:
    • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS

      public static final String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS

      This property control (enable/disable) semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet)

      This algorithm WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet) is being used when a transaction is committing and it is acquire locks to merge the change set. It should happen if algorithm has trouble when multiple threads report change sets on the same entity (e.g. one-to-many relations of master detail being enriched with more details on this master). Note: Parallel access to the same entity/entity tree from different threads is not recommended technique in EclipseLink.
      • "true" - means we want to override vanilla behavior and use a semaphore to not allow too many threads. In this case there should be negative impact to the performance.
      • "false" (DEFAULT) - means just go ahead and try to build the object without any semaphore (false is vanilla behavior).
      See Also:
    • CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS

      public static final String CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS

      This property control number of threads in semaphore in ObjectBuilder If "eclipselink.concurrency.manager.object.building.semaphore" property is true default value is 10. Allowed values are: int If "eclipselink.concurrency.manager.object.building.semaphore" property is false (DEFAULT) number of threads is unlimited.

      See Also:
    • CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS

      public static final String CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS

      This property control number of threads in semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet) If "eclipselink.concurrency.manager.write.lock.manager.semaphore" property is true default value is 2. Allowed values are: int If "eclipselink.concurrency.manager.write.lock.manager.semaphore" property is false (DEFAULT) number of threads is unlimited.

      See Also:
    • CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT

      public static final String CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT

      This property control semaphore the maximum time to wait for a permit in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) It's passed to Semaphore.tryAcquire(long, TimeUnit) Default value is 2000 (unit is ms). Allowed values are: long

      See Also:
    • CONCURRENCY_SEMAPHORE_LOG_TIMEOUT

      public static final String CONCURRENCY_SEMAPHORE_LOG_TIMEOUT

      This property control timeout between log messages in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) when method/thread tries to get permit for the execution. Default value is 10000 (unit is ms). Allowed values are: long

      See Also:
    • QUERY_RESULTS_CACHE_VALIDATION

      public static final String QUERY_RESULTS_CACHE_VALIDATION

      This property control (enable/disable) query result cache validation in UnitOfWorkImpl.internalExecuteQuery(org.eclipse.persistence.queries.DatabaseQuery, org.eclipse.persistence.internal.sessions.AbstractRecord)

      This can be used to help debugging an object identity problem. An object identity problem is when an managed/active entity in the cache references an entity not in managed state. This method will validate that objects in query results (object tree) are in a correct state. As a result there are new log messages in the log. It's related with "read" queries like em.find(...); or JPQL queries like SELECT e FROM Entity e. It should be controlled at query level too by query hint QueryHints.QUERY_RESULTS_CACHE_VALIDATION
      • "true" - validate query result object tree and if content is not valid print diagnostic messages. In this case there should be negative impact to the performance.
      • "false" (DEFAULT) - don't validate and print any diagnostic messages
      See Also:
    • LOGIN_ENCRYPTOR

      public static final String LOGIN_ENCRYPTOR
      The "eclipselink.login.encryptor" property configures a custom implementation of Securable class used to encrypt and decrypt database password loaded from "jakarta.persistence.jdbc.password" property. If this property is not specified JCEEncryptor as a default encryptor is used.

      Allowed Values:

      • the fully qualified name for a class that implements Securable interface
      See Also:
    • PROPERTY_LOG_OVERRIDES

      public static final Map<String,String> PROPERTY_LOG_OVERRIDES
      INTERNAL: The following properties will not be displayed through logging but instead have an alternate value shown in the log.
  • Constructor Details

    • PersistenceUnitProperties

      public PersistenceUnitProperties()
  • Method Details

    • getOverriddenLogStringForProperty

      public static String getOverriddenLogStringForProperty(String propertyName)
      INTERNAL: Return the overridden log string.
      Parameters:
      propertyName - property which value should be overriden in the log
      Returns:
      the overridden log string
    • getSupportedNonServerSessionProperties

      public static Set<String> getSupportedNonServerSessionProperties()