Class DatasourceConnectionProviderImpl
- java.lang.Object
-
- org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl
-
- All Implemented Interfaces:
Serializable
,ConnectionProvider
,Service
,Configurable
,Stoppable
,Wrapped
public class DatasourceConnectionProviderImpl extends Object implements ConnectionProvider, Configurable, Stoppable
AConnectionProvider
that manages connections from an underlyingDataSource
. TheDataSource
to use may be specified by either:- injection using
setDataSource(javax.sql.DataSource)
- declaring the
DataSource
instance using the "hibernate.connection.datasource" config property - declaring the JNDI name under which the
DataSource
is found via the "hibernate.connection.datasource" config property
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DatasourceConnectionProviderImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
closeConnection(Connection connection)
Release a connection from Hibernate use.void
configure(Map<String,Object> configValues)
Configure the service.Connection
getConnection()
Obtains a connection for Hibernate use according to the underlying strategy of this provider.DataSource
getDataSource()
boolean
isUnwrappableAs(Class<?> unwrapType)
Can this wrapped service be unwrapped as the indicated type?void
setDataSource(DataSource dataSource)
void
setJndiService(JndiService jndiService)
void
stop()
Stop phase notificationboolean
supportsAggressiveRelease()
Does this connection provider support aggressive release of JDBC connections and later re-acquisition of those connections if needed?<T> T
unwrap(Class<T> unwrapType)
Unproxy the service proxy
-
-
-
Method Detail
-
getDataSource
public DataSource getDataSource()
-
setDataSource
public void setDataSource(DataSource dataSource)
-
setJndiService
public void setJndiService(JndiService jndiService)
-
isUnwrappableAs
public boolean isUnwrappableAs(Class<?> unwrapType)
Description copied from interface:Wrapped
Can this wrapped service be unwrapped as the indicated type?- Specified by:
isUnwrappableAs
in interfaceWrapped
- Parameters:
unwrapType
- The type to check.- Returns:
- True/false.
-
unwrap
public <T> T unwrap(Class<T> unwrapType)
Description copied from interface:Wrapped
Unproxy the service proxy
-
configure
public void configure(Map<String,Object> configValues)
Description copied from interface:Configurable
Configure the service.- Specified by:
configure
in interfaceConfigurable
- Parameters:
configValues
- The configuration properties.
-
stop
public void stop()
Description copied from interface:Stoppable
Stop phase notification
-
getConnection
public Connection getConnection() throws SQLException
Description copied from interface:ConnectionProvider
Obtains a connection for Hibernate use according to the underlying strategy of this provider.- Specified by:
getConnection
in interfaceConnectionProvider
- Returns:
- The obtained JDBC connection
- Throws:
SQLException
- Indicates a problem opening a connection
-
closeConnection
public void closeConnection(Connection connection) throws SQLException
Description copied from interface:ConnectionProvider
Release a connection from Hibernate use.- Specified by:
closeConnection
in interfaceConnectionProvider
- Parameters:
connection
- The JDBC connection to release- Throws:
SQLException
- Indicates a problem closing the connection
-
supportsAggressiveRelease
public boolean supportsAggressiveRelease()
Description copied from interface:ConnectionProvider
Does this connection provider support aggressive release of JDBC connections and later re-acquisition of those connections if needed? This is used in conjunction withConnectionReleaseMode.AFTER_STATEMENT
to aggressively release JDBC connections. However, the configured ConnectionProvider must support re-acquisition of the same underlying connection for that semantic to work. Typically, this is only true in managed environments where a container tracks connections by transaction or thread. Note that JTA semantic depends on the fact that the underlying connection provider does support aggressive release.- Specified by:
supportsAggressiveRelease
in interfaceConnectionProvider
- Returns:
true
if aggressive releasing is supported;false
otherwise.
-
-