Class ResourceRegistryStandardImpl
java.lang.Object
org.hibernate.resource.jdbc.internal.ResourceRegistryStandardImpl
- All Implemented Interfaces:
ResourceRegistry
Helps to track
Statements and ResultSets which need to be 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 to use "for each" and lambdas in this case.
However, the "for each"/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.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbooleanDoes this registry currently have any registered resources?voidvoidvoidvoidRegister a JDBC result set.voidRegister a JDBC statement.voidvoidvoidvoidRelease a previously registered result set.voidRelease a previously registered statement.void
-
Constructor Details
-
ResourceRegistryStandardImpl
public ResourceRegistryStandardImpl() -
ResourceRegistryStandardImpl
-
-
Method Details
-
hasRegisteredResources
public boolean hasRegisteredResources()Description copied from interface:ResourceRegistryDoes this registry currently have any registered resources?- Specified by:
hasRegisteredResourcesin interfaceResourceRegistry- Returns:
- True if the registry does have registered resources; false otherwise.
-
register
Description copied from interface:ResourceRegistryRegister a JDBC statement.- Specified by:
registerin 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:ResourceRegistryRelease a previously registered statement.- Specified by:
releasein interfaceResourceRegistry- Parameters:
statement- The statement to release.
-
release
Description copied from interface:ResourceRegistryRelease a previously registered result set.- Specified by:
releasein interfaceResourceRegistry- Parameters:
resultSet- The result set to release.statement- Statement from whichResultSethas been generated.
-
register
Description copied from interface:ResourceRegistryRegister 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 originalStatementobject.- Specified by:
registerin interfaceResourceRegistry- Parameters:
resultSet- The result set to register.statement- Statement from whichResultSethas been generated.
-
register
- Specified by:
registerin interfaceResourceRegistry
-
release
- Specified by:
releasein interfaceResourceRegistry
-
register
- Specified by:
registerin interfaceResourceRegistry
-
release
- Specified by:
releasein interfaceResourceRegistry
-
register
- Specified by:
registerin interfaceResourceRegistry
-
release
- Specified by:
releasein interfaceResourceRegistry
-
cancelLastQuery
public void cancelLastQuery()- Specified by:
cancelLastQueryin interfaceResourceRegistry
-
releaseResources
public void releaseResources()- Specified by:
releaseResourcesin interfaceResourceRegistry
-