/*
* 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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
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 ConnectionAcquisitionMode
. Author: Steve Ebersole
/**
* 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.
/**
* Indicates that JDBC connection should be aggressively released after each
* SQL statement is executed. In this mode, the application <em>must</em>
* 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 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 ON_CLOSE
. /**
* 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.
* <p/>
* 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.
/**
* 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 valueOf(String)
using upper-case version of the incoming name. Params: - name – The name to parse
Returns: The matched enum value.
/**
* 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 );
}
}