/* * 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 {@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 <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. * <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. */ 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 ); } }