Class ResourceRegistryStandardImpl
java.lang.Object
org.hibernate.resource.jdbc.internal.ResourceRegistryStandardImpl
- All Implemented Interfaces:
ResourceRegistry
Helps to track
Statement
s and ResultSet
s which need to be closed.
This class is not threadsafe.
Note regarding performance: we had evidence that allocating Iterator
s
to implement the cleanup on each element recursively was the dominant
resource cost, so we decided to use "for each" and lambdas in this case.
However, the "for each"/lambda combination is able to dodge allocating
Iterator
s 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
.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
boolean
Does this registry currently have any registered resources?void
void
void
void
Register a JDBC result set.void
Register a JDBC statement.void
void
void
void
Release a previously registered result set.void
Release a previously registered statement.void
-
Constructor Details
-
ResourceRegistryStandardImpl
public ResourceRegistryStandardImpl() -
ResourceRegistryStandardImpl
-
-
Method Details
-
hasRegisteredResources
public boolean hasRegisteredResources()Description copied from interface:ResourceRegistry
Does this registry currently have any registered resources?- Specified by:
hasRegisteredResources
in interfaceResourceRegistry
- Returns:
- True if the registry does have registered resources; false otherwise.
-
register
Description copied from interface:ResourceRegistry
Register a JDBC statement.- Specified by:
register
in interfaceResourceRegistry
- Parameters:
statement
- The statement to register.cancelable
- Is the statement being registered capable of being cancelled? In other words, should we register it to be the target of subsequentResourceRegistry.cancelLastQuery()
calls?
-
release
Description copied from interface:ResourceRegistry
Release a previously registered statement.- Specified by:
release
in interfaceResourceRegistry
- Parameters:
statement
- The statement to release.
-
release
Description copied from interface:ResourceRegistry
Release a previously registered result set.- Specified by:
release
in interfaceResourceRegistry
- Parameters:
resultSet
- The result set to release.statement
- Statement from whichResultSet
has been generated.
-
register
Description copied from interface:ResourceRegistry
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 originalStatement
object.- Specified by:
register
in interfaceResourceRegistry
- Parameters:
resultSet
- The result set to register.statement
- Statement from whichResultSet
has been generated.
-
register
- Specified by:
register
in interfaceResourceRegistry
-
release
- Specified by:
release
in interfaceResourceRegistry
-
register
- Specified by:
register
in interfaceResourceRegistry
-
release
- Specified by:
release
in interfaceResourceRegistry
-
register
- Specified by:
register
in interfaceResourceRegistry
-
release
- Specified by:
release
in interfaceResourceRegistry
-
cancelLastQuery
public void cancelLastQuery()- Specified by:
cancelLastQuery
in interfaceResourceRegistry
-
releaseResources
public void releaseResources()- Specified by:
releaseResources
in interfaceResourceRegistry
-