All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.transaction.TransactionExecution Maven / Gradle / Ivy

There is a newer version: 6.2.0
Show newest version
/*
 * Copyright 2002-2023 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.transaction;

/**
 * Common representation of the current state of a transaction.
 * Serves as base interface for {@link TransactionStatus} as well as
 * {@link ReactiveTransaction}, and as of 6.1 also as transaction
 * representation for {@link TransactionExecutionListener}.
 *
 * @author Juergen Hoeller
 * @since 5.2
 */
public interface TransactionExecution {

	/**
	 * Return the defined name of the transaction (possibly an empty String).
	 * 

In case of Spring's declarative transactions, the exposed name will be * the {@code fully-qualified class name + "." + method name} (by default). *

The default implementation returns an empty String. * @since 6.1 * @see TransactionDefinition#getName() */ default String getTransactionName() { return ""; } /** * Return whether there is an actual transaction active: this is meant to cover * a new transaction as well as participation in an existing transaction, only * returning {@code false} when not running in an actual transaction at all. *

The default implementation returns {@code true}. * @since 6.1 * @see #isNewTransaction() * @see #isNested() * @see #isReadOnly() */ default boolean hasTransaction() { return true; } /** * Return whether the transaction manager considers the present transaction * as new; otherwise participating in an existing transaction, or potentially * not running in an actual transaction in the first place. *

This is primarily here for transaction manager state handling. * Prefer the use of {@link #hasTransaction()} for application purposes * since this is usually semantically appropriate. *

The "new" status can be transaction manager specific, e.g. returning * {@code true} for an actual nested transaction but potentially {@code false} * for a savepoint-based nested transaction scope if the savepoint management * is explicitly exposed (such as on {@link TransactionStatus}). A combined * check for any kind of nested execution is provided by {@link #isNested()}. *

The default implementation returns {@code true}. * @see #hasTransaction() * @see #isNested() * @see TransactionStatus#hasSavepoint() */ default boolean isNewTransaction() { return true; } /** * Return if this transaction executes in a nested fashion within another. *

The default implementation returns {@code false}. * @since 6.1 * @see #hasTransaction() * @see #isNewTransaction() * @see TransactionDefinition#PROPAGATION_NESTED */ default boolean isNested() { return false; } /** * Return if this transaction is defined as read-only transaction. *

The default implementation returns {@code false}. * @since 6.1 * @see TransactionDefinition#isReadOnly() */ default boolean isReadOnly() { return false; } /** * Set the transaction rollback-only. This instructs the transaction manager * that the only possible outcome of the transaction may be a rollback, as * alternative to throwing an exception which would in turn trigger a rollback. *

The default implementation throws an UnsupportedOperationException. * @see #isRollbackOnly() */ default void setRollbackOnly() { throw new UnsupportedOperationException("setRollbackOnly not supported"); } /** * Return whether the transaction has been marked as rollback-only * (either by the application or by the transaction infrastructure). *

The default implementation returns {@code false}. * @see #setRollbackOnly() */ default boolean isRollbackOnly() { return false; } /** * Return whether this transaction is completed, that is, * whether it has already been committed or rolled back. *

The default implementation returns {@code false}. */ default boolean isCompleted() { return false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy