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

org.jooq.impl.DefaultConnectionProvider Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2009-2016, Data Geekery GmbH (http://www.datageekery.com)
 * All rights reserved.
 *
 * 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
 *
 *  http://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.
 *
 * Other licenses:
 * -----------------------------------------------------------------------------
 * Commercial licenses for this work are available. These replace the above
 * ASL 2.0 and offer limited warranties, support, maintenance, and commercial
 * database integrations.
 *
 * For more information, please visit: http://www.jooq.org/licenses
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package org.jooq.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;

import org.jooq.ConnectionProvider;
import org.jooq.exception.DataAccessException;
import org.jooq.tools.JooqLogger;
import org.jooq.tools.jdbc.JDBCUtils;

/**
 * A default implementation for {@link ConnectionProvider}.
 * 

* This implementation just wraps a JDBC {@link Connection} and provides jOOQ * with the same connection for every query. jOOQ will not call any * transaction-related methods on the supplied connection. Instead, jOOQ * provides you with convenient access to those methods, wrapping any checked * {@link SQLException} into an unchecked {@link DataAccessException} * * @author Aaron Digulla * @author Lukas Eder */ public class DefaultConnectionProvider implements ConnectionProvider { private static final JooqLogger log = JooqLogger.getLogger(DefaultConnectionProvider.class); Connection connection; final boolean finalize; public DefaultConnectionProvider(Connection connection) { this(connection, false); } DefaultConnectionProvider(Connection connection, boolean finalize) { this.connection = connection; this.finalize = finalize; } // ------------------------------------------------------------------------- // XXX: ConnectionProvider API // ------------------------------------------------------------------------- @Override public final Connection acquire() { return connection; } @Override public final void release(Connection released) {} @Override protected void finalize() throws Throwable { if (finalize) JDBCUtils.safeClose(connection); super.finalize(); } // ------------------------------------------------------------------------- // XXX: Original DSLContext/Factory API (JDBC utility methods) // ------------------------------------------------------------------------- public final void setConnection(Connection connection) { this.connection = connection; } /** * Convenience method to access {@link Connection#commit()}. */ public final void commit() throws DataAccessException { try { log.debug("commit"); connection.commit(); } catch (Exception e) { throw new DataAccessException("Cannot commit transaction", e); } } /** * Convenience method to access {@link Connection#rollback()}. */ public final void rollback() throws DataAccessException { try { log.debug("rollback"); connection.rollback(); } catch (Exception e) { throw new DataAccessException("Cannot rollback transaction", e); } } /** * Convenience method to access {@link Connection#rollback(Savepoint)}. */ public final void rollback(Savepoint savepoint) throws DataAccessException { try { log.debug("rollback to savepoint"); connection.rollback(savepoint); } catch (Exception e) { throw new DataAccessException("Cannot rollback transaction", e); } } /** * Convenience method to access {@link Connection#setSavepoint()}. */ public final Savepoint setSavepoint() throws DataAccessException { try { log.debug("set savepoint"); return connection.setSavepoint(); } catch (Exception e) { throw new DataAccessException("Cannot set savepoint", e); } } /** * Convenience method to access {@link Connection#setSavepoint(String)}. */ public final Savepoint setSavepoint(String name) throws DataAccessException { try { log.debug("set savepoint", name); return connection.setSavepoint(name); } catch (Exception e) { throw new DataAccessException("Cannot set savepoint", e); } } /** * Convenience method to access * {@link Connection#releaseSavepoint(Savepoint)}. */ public final void releaseSavepoint(Savepoint savepoint) throws DataAccessException { try { log.debug("release savepoint"); connection.releaseSavepoint(savepoint); } catch (Exception e) { throw new DataAccessException("Cannot release savepoint", e); } } /** * Convenience method to access {@link Connection#setReadOnly(boolean)}. */ public final void setReadOnly(boolean readOnly) throws DataAccessException { try { log.debug("setting read only", readOnly); connection.setReadOnly(readOnly); } catch (Exception e) { throw new DataAccessException("Cannot set readOnly", e); } } /** * Convenience method to access {@link Connection#isReadOnly()}. */ public final boolean isReadOnly() throws DataAccessException { try { return connection.isReadOnly(); } catch (Exception e) { throw new DataAccessException("Cannot get readOnly", e); } } /** * Convenience method to access {@link Connection#setAutoCommit(boolean)}. */ public final void setAutoCommit(boolean autoCommit) throws DataAccessException { try { log.debug("setting auto commit", autoCommit); connection.setAutoCommit(autoCommit); } catch (Exception e) { throw new DataAccessException("Cannot set autoCommit", e); } } /** * Convenience method to access {@link Connection#getAutoCommit()}. */ public final boolean getAutoCommit() throws DataAccessException { try { return connection.getAutoCommit(); } catch (Exception e) { throw new DataAccessException("Cannot get autoCommit", e); } } /** * Convenience method to access {@link Connection#setHoldability(int)}. */ public final void setHoldability(int holdability) throws DataAccessException { try { log.debug("setting holdability", holdability); connection.setHoldability(holdability); } catch (Exception e) { throw new DataAccessException("Cannot set holdability", e); } } /** * Convenience method to access {@link Connection#getHoldability()}. */ public final int getHoldability() throws DataAccessException { try { return connection.getHoldability(); } catch (Exception e) { throw new DataAccessException("Cannot get holdability", e); } } /** * Convenience method to access * {@link Connection#setTransactionIsolation(int)}. */ public final void setTransactionIsolation(int level) throws DataAccessException { try { log.debug("setting tx isolation", level); connection.setTransactionIsolation(level); } catch (Exception e) { throw new DataAccessException("Cannot set transactionIsolation", e); } } /** * Convenience method to access {@link Connection#getTransactionIsolation()}. */ public final int getTransactionIsolation() throws DataAccessException { try { return connection.getTransactionIsolation(); } catch (Exception e) { throw new DataAccessException("Cannot get transactionIsolation", e); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy