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

org.hibernate.ConnectionReleaseMode Maven / Gradle / Ivy

There is a newer version: 6.6.2.Final
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate;

import java.util.Locale;

import org.hibernate.internal.util.StringHelper;

/**
 * Defines the various policies by which Hibernate might release its underlying
 * JDBC connection.  Inverse of {@link ConnectionAcquisitionMode}.
 *
 * @author Steve Ebersole
 */
public enum ConnectionReleaseMode{
	/**
	 * Indicates that JDBC connection should be aggressively released after each
	 * SQL statement is executed. In this mode, the application must
	 * explicitly close all iterators and scrollable results. This mode may
	 * only be used with a JTA datasource.
	 */
	AFTER_STATEMENT,

	/**
	 * Indicates that JDBC connections should be released before each transaction
	 * commits/rollbacks (works with both JTA-registered synch and HibernateTransaction API).
	 * This mode may be used with an application server JTA datasource.
	 */
	BEFORE_TRANSACTION_COMPLETION,

	/**
	 * Indicates that JDBC connections should be released after each transaction
	 * ends (works with both JTA-registered synch and HibernateTransaction API).
	 * This mode may not be used with an application server JTA datasource.
	 * 

* This is the default mode starting in 3.1; was previously {@link #ON_CLOSE}. */ AFTER_TRANSACTION, /** * Indicates that connections should only be released when the Session is explicitly closed * or disconnected; this is the legacy (Hibernate2 and pre-3.1) behavior. */ ON_CLOSE; /** * Alias for {@link ConnectionReleaseMode#valueOf(String)} using upper-case version of the incoming name. * * @param name The name to parse * * @return The matched enum value. */ public static ConnectionReleaseMode parse(final String name) { return ConnectionReleaseMode.valueOf( name.toUpperCase(Locale.ROOT) ); } public static ConnectionReleaseMode interpret(Object setting) { if ( setting == null ) { return null; } if ( setting instanceof ConnectionReleaseMode ) { return (ConnectionReleaseMode) setting; } final String value = setting.toString(); if ( StringHelper.isEmpty( value ) ) { return null; } // here we disregard "auto" if ( value.equalsIgnoreCase( "auto" ) ) { return null; } return parse( value ); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy