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

org.hibernate.transaction.TransactionFactory Maven / Gradle / Ivy

There is a newer version: 7.0.0.Beta1
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Middleware LLC.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 *
 */
package org.hibernate.transaction;

import java.util.Properties;

import org.hibernate.ConnectionReleaseMode;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.jdbc.JDBCContext;

/**
 * Contract for generating Hibernate {@link Transaction} instances.
 * 

* The concrete implementation to be used is specified by the * {@link org.hibernate.cfg.Environment#TRANSACTION_STRATEGY} configuration * setting. *

* Implementors must be threadsafe and should declare a public default constructor. * * @see Transaction * * @author Anton van Straaten * @author Gavin King */ public interface TransactionFactory { /** * Callback mechanism; a context is always a {@link org.hibernate.Session} * in the Hibernate usage. */ public static interface Context { public SessionFactoryImplementor getFactory(); public boolean isClosed(); public boolean isFlushModeNever(); public boolean isFlushBeforeCompletionEnabled(); public void managedFlush(); public boolean shouldAutoClose(); public void managedClose(); } /** * Begin a transaction and return the associated Transaction instance. * * @param jdbcContext The jdbc context to which the transaction belongs * @param context The contract regarding the context in which this transaction will operate. * @return Transaction * @throws HibernateException Indicates a problem generating a transaction instance */ public Transaction createTransaction(JDBCContext jdbcContext, Context context) throws HibernateException; /** * Configure from the given properties. * * @param props The configuration properties. * @throws HibernateException Indicates a problem configuring this factory. */ public void configure(Properties props) throws HibernateException; /** * Get the default connection release mode. * * @return The default release mode associated with this strategy */ public ConnectionReleaseMode getDefaultReleaseMode(); /** * Do we require access to the JTA TransactionManager for * this strategy? * * @return True if this strategy requires access to the JTA TransactionManager; * false otherwise. */ public boolean isTransactionManagerRequired(); /** * Are all transaction callbacks local to Hibernate Transactions? * Or can the callbacks originate from some other source (e.g. a JTA * Synchronization). * * @return true if callbacks only ever originate from the Hibernate * {@link Transaction}; false otherwise. */ public boolean areCallbacksLocalToHibernateTransactions(); /** * Determine whether an underlying transaction is in progress. *

* Mainly this is used in determining whether to register a * synchronization as well as whether or not to circumvent * auto flushing outside transactions. * * @param jdbcContext The JDBC context * @param transactionContext The transaction context * @param transaction The Hibernate transaction * @return true if an underlying transaction is know to be in effect. */ public boolean isTransactionInProgress(JDBCContext jdbcContext, Context transactionContext, Transaction transaction); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy