blob: 539c4122d058ffe0258b3f4055ca053bfc5365d5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.config;
/**
* Cache usage hint values.
* Cache usage allows the cache to be used on queries to avoid accessing the database.
* By default for JPA queries the cache is not checked before accessing the database,
* but is used after accessing the database to avoid re-building the objects and avoid
* accessing the database for relationships.
*
* Cache usage can also be used for modify Update-All and Delete-All queries.
* For modify-all queries it effects how the cache is updated, either NoCache or Invalidate.
* By default modify-all queries invalidate the cache.
*
* The class contains all the valid values for QueryHints.CACHE_USAGE query hint.
*
* <p>JPA Query Hint Usage:
*
* <p><code>query.setHint(QueryHints.CACHE_USAGE, CacheUsage.CheckCacheOnly);</code>
* <p>or
* <p><code>@QueryHint(name=QueryHints.CACHE_USAGE, value=CacheUsage.CheckCacheOnly)</code>
*
* <p>Hint values are case-insensitive.
* "" could be used instead of default value CacheUsage.DEFAULT.
*
* @see QueryHints
*/
public class CacheUsage {
/**
* By default the descriptor default is used, which is to not check the cache first.
*/
public static final String UseEntityDefault = "UseEntityDefault";
/**
* Do not check the cache first, this is the default for JPA Queries.
*/
public static final String DoNotCheckCache = "DoNotCheckCache";
/**
* Configure the cache to be checked first if the query is by primary key (only).
* This can only be used on queries that return a single entity.
*/
public static final String CheckCacheByExactPrimaryKey = "CheckCacheByExactPrimaryKey";
/**
* Configure the cache to be checked first if the query contains the primary key.
* This can only be used on queries that return a single entity.
*/
public static final String CheckCacheByPrimaryKey = "CheckCacheByPrimaryKey";
/**
* Configure the cache to be searched for any matching object before accesing the database.
* This can only be used on queries that return a single entity.
*/
public static final String CheckCacheThenDatabase = "CheckCacheThenDatabase";
/**
* Configure the cache to be searched for any matching objects.
* Any objects not currently in the cache will not be returned.
* This can only be used on queries that return a single set of entities.
*/
public static final String CheckCacheOnly = "CheckCacheOnly";
/**
* Configure the query results to be conformed with the current persistence context.
* This allows non-flushed changes to be included in the query.
* This can only be used on queries that return a single set of entities.
*/
public static final String ConformResultsInUnitOfWork = "ConformResultsInUnitOfWork";
/**
* Configures a modify-all query to not invalidate the cache.
*/
public static final String NoCache = "NoCache";
/**
* Configures a modify-all query to invalidate the cache.
*/
public static final String Invalidate = "Invalidate";
public static final String DEFAULT = UseEntityDefault;
}