Top Description Fields Constructors Methods
org.hibernate.resource.jdbc.internal

public final Class ResourceRegistryStandardImpl

extends Object
implements ResourceRegistry
Class Inheritance
All Implemented Interfaces
org.hibernate.resource.jdbc.ResourceRegistry
Imports
java.sql.Blob, .Clob, .NClob, .ResultSet, .SQLException, .Statement, java.util.ArrayList, .HashMap, org.hibernate.HibernateException, .JDBCException, org.hibernate.internal.CoreLogging, .CoreMessageLogger, org.hibernate.resource.jdbc.ResourceRegistry, org.hibernate.resource.jdbc.spi.JdbcObserver

Helps to track statements and resultsets which need being closed. This class is not threadsafe.

Note regarding performance: we had evidence that allocating Iterators to implement the cleanup on each element recursively was the dominant resource cost, so we decided using "forEach" and lambdas in this case. However the forEach/lambda combination is able to dodge allocating Iterators on HashMap and ArrayList, but not on HashSet (at least on JDK8 and 11). Therefore some types which should ideally be modelled as a Set have been implemented using HashMap.

Authors
Steve Ebersole, Sanne Grinovero

Field Summary

Modifier and TypeField and Description
private ArrayList<Blob>
private ArrayList<Clob>
private static final HashMap<ResultSet, Object>
private final JdbcObserver
jdbcObserver

Deprecated as a consequence of JdbcObserver being deprecated.
private Statement
private static final CoreMessageLogger
private ArrayList<NClob>
private static final Object
private HashMap<ResultSet, Object>
private final HashMap<Statement, HashMap<ResultSet, Object>>

Constructor Summary

AccessConstructor and Description
public
public
ResourceRegistryStandardImpl(JdbcObserver jdbcObserver)

Deprecated as a consequence of JdbcObserver being deprecated.

Method Summary

Modifier and TypeMethod and Description
public void
private static void
close(final ResultSet resultSet)

public static void
close(Statement statement)

private static void
closeAll(final HashMap<ResultSet, Object> resultSets)

private JDBCException
private boolean
hasRegistered(final HashMap<K, V> resource)

private boolean
hasRegistered(final ArrayList<E> resource)

public boolean
hasRegisteredResources()

Implements org.hibernate.resource.jdbc.ResourceRegistry.hasRegisteredResources.

Does this registry currently have any registered resources?
public void
register(Statement
The statement to register.
statement
,
boolean
Is the statement being registered capable of being cancelled? In other words, should we register it to be the target of subsequent cancelLastQuery() calls?
cancelable
)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Register a JDBC statement.
public void
register(ResultSet
The result set to register.
resultSet
,
Statement
Statement from which ResultSet has been generated.
statement
)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Register a JDBC result set.
public void
public void
public void
public void
release(Statement
The statement to release.
statement
)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Release a previously registered statement.
public void
release(ResultSet
The result set to release.
resultSet
,
Statement
Statement from which ResultSet has been generated.
statement
)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Release a previously registered result set.
public void
public void
public void
public void
private static void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

blobsback to summary
private ArrayList<Blob> blobs
clobsback to summary
private ArrayList<Clob> clobs
EMPTYback to summary
private static final HashMap<ResultSet, Object> EMPTY
jdbcObserverback to summary
private final JdbcObserver jdbcObserver

Deprecated

as a consequence of JdbcObserver being deprecated. See corresponding docs for further information.

lastQueryback to summary
private Statement lastQuery
logback to summary
private static final CoreMessageLogger log
nclobsback to summary
private ArrayList<NClob> nclobs
PRESENTback to summary
private static final Object PRESENT
unassociatedResultSetsback to summary
private HashMap<ResultSet, Object> unassociatedResultSets
xrefback to summary
private final HashMap<Statement, HashMap<ResultSet, Object>> xref

Constructor Detail

ResourceRegistryStandardImplback to summary
public ResourceRegistryStandardImpl()
ResourceRegistryStandardImplback to summary
public ResourceRegistryStandardImpl(JdbcObserver jdbcObserver)

Deprecated

as a consequence of JdbcObserver being deprecated. See corresponding docs for further information.

Method Detail

cancelLastQueryback to summary
public void cancelLastQuery()

Implements org.hibernate.resource.jdbc.ResourceRegistry.cancelLastQuery.

Annotations
@Override
closeback to summary
private static void close(final ResultSet resultSet)
closeback to summary
public static void close(Statement statement)
Annotations
@SuppressWarnings:unchecked
closeAllback to summary
private static void closeAll(final HashMap<ResultSet, Object> resultSets)
convertback to summary
private JDBCException convert(SQLException e, String s)
hasRegisteredback to summary
private boolean hasRegistered(final HashMap<K, V> resource)
hasRegisteredback to summary
private boolean hasRegistered(final ArrayList<E> resource)
hasRegisteredResourcesback to summary
public boolean hasRegisteredResources()

Implements org.hibernate.resource.jdbc.ResourceRegistry.hasRegisteredResources.

Doc from org.hibernate.resource.jdbc.ResourceRegistry.hasRegisteredResources.

Does this registry currently have any registered resources?

Returns:boolean

True if the registry does have registered resources; false otherwise.

Annotations
@Override
registerback to summary
public void register(Statement statement, boolean cancelable)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Doc from org.hibernate.resource.jdbc.ResourceRegistry.register.

Register a JDBC statement.

Parameters
statement:Statement

The statement to register.

cancelable:boolean

Is the statement being registered capable of being cancelled? In other words, should we register it to be the target of subsequent cancelLastQuery() calls?

Annotations
@Override
registerback to summary
public void register(ResultSet resultSet, Statement statement)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Doc from org.hibernate.resource.jdbc.ResourceRegistry.register.

Register a JDBC result set.

Implementation Note

Second parameter has been introduced to prevent multiple registrations of the same statement in case ResultSet#getStatement() does not return original Statement object.

Parameters
resultSet:ResultSet

The result set to register.

statement:Statement

Statement from which ResultSet has been generated.

Annotations
@Override
registerback to summary
public void register(Blob blob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Annotations
@Override
registerback to summary
public void register(Clob clob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Annotations
@Override
registerback to summary
public void register(NClob nclob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.register.

Annotations
@Override
releaseback to summary
public void release(Statement statement)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Doc from org.hibernate.resource.jdbc.ResourceRegistry.release.

Release a previously registered statement.

Parameters
statement:Statement

The statement to release.

Annotations
@Override
releaseback to summary
public void release(ResultSet resultSet, Statement statement)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Doc from org.hibernate.resource.jdbc.ResourceRegistry.release.

Release a previously registered result set.

Parameters
resultSet:ResultSet

The result set to release.

statement:Statement

Statement from which ResultSet has been generated.

Annotations
@Override
releaseback to summary
public void release(Blob blob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Annotations
@Override
releaseback to summary
public void release(Clob clob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Annotations
@Override
releaseback to summary
public void release(NClob nclob)

Implements org.hibernate.resource.jdbc.ResourceRegistry.release.

Annotations
@Override
releaseResourcesback to summary
public void releaseResources()

Implements org.hibernate.resource.jdbc.ResourceRegistry.releaseResources.

Annotations
@Override
releaseXrefback to summary
private static void releaseXref(final Statement s, final HashMap<ResultSet, Object> r)