//$Id: FlushModeType.java 11282 2007-03-14 22:05:59Z epbernard $
package javax.persistence;

/**
 * Flush mode setting.
 *
 * When queries are executed within a transaction, if FlushModeType.AUTO is set on the Query object,
 * or if the flush mode setting for the persistence context is AUTO (the default) and a flush mode
 * setting has not been specified for the Query object, the persistence provider is responsible for
 * ensuring that all updates to the state of all entities in the persistence context which could
 * potentially affect the result of the query are visible to the processing of the query.
 * The persistence provider implementation may achieve this by flushing those entities to the database
 * or by some other means. If FlushModeType.COMMIT is set, the effect of updates made to entities in the
 * persistence context upon queries is unspecified.
 *
 * If there is no transaction active, the persistence provider must not flush to the database.
 *
 * @author Gavin King
 */
public enum FlushModeType {
	/**
	 * Flushing must occur only at transaction commit
	 */
	COMMIT,
	/**
	 * (Default) Flushing to occur at query execution
	 */
	AUTO
}
