HHH-11356 - Adjust the 2nd-Cache SPIs to better reflect supported uses

This commit is contained in:
Steve Ebersole 2018-04-19 12:31:41 -05:00
parent 291d4a3eea
commit e7130605f0
1 changed files with 23 additions and 21 deletions

View File

@ -56,37 +56,39 @@ The relocation pom may be dropped in a future release.
==== ====
=== 5.3 -> 6.0 compatibility changes === Second-level cache provider SPI changes
The original driving force behind these series of changes is an effort to be as proactive as possible Hibernate's second-level cache SPI needed to be redesigned to match with expectations between
about designing compatibility between 5.3 and 6.0. Hibernate and the various caching providers. And the SPI did not really clarify the intention.
These mis-matched expectations certainly had the potential to lead to bugs. Although it was
originally slated for 6.0 to delay the SPI changes, we decided to back-port the work to
5.3 to address a number of bugs that could have been avoided with a clarified SPI.
The changes also allow the caching providers to perform serious optimizations based on
the users configuration of domain data caching in Hibernate.
Details can be seen on the https://hibernate.atlassian.net/browse/HHH-11356[HHH-11356] Jira issue
One potential upgrade concern is any custom `org.hibernate.cache.spi.QueryCacheFactory` implementations.
`org.hibernate.cache.spi.QueryCacheFactory` was meant as a means to allow service providers the
ability to define query result caching, generally with more stale-tolerant query result invalidation handling.
However, the contract also bound it to the old second level cache contracts so they had to be
updated. Its responsibilities also changed so we also decided to "rename it" to
`org.hibernate.cache.spi.TimestampsCacheFactory`
==== Second-level cache provider SPI changes === Statistics changes
As a fix for a potentially nasty bug in caching, we needed to redesign the Second-level cache provider
SPI. Details can be seen on the https://hibernate.atlassian.net/browse/HHH-11356[HHH-11356] Jira issue.
Originally slated for 6.0 - to avoid the SPI changes, it was decided to back-port it to 5.3 because the
bug became really important.
One manifestation of this is the clarification that a single second-level cache region
may not be used to store both query-results and domain-data (entity, collection and natural-id).
Care was taken to maintain backwards compatibility so that applications could continue unchanged,
although the older access methods have been deprecated as described above.
==== Statistics changes
The change for HHH-11356 required changes in its consumers. One such consumer is the Hibernate The change for HHH-11356 required changes in its consumers. One such consumer is the Hibernate
Statistics system.... Statistics system....
==== Cache regionName expectations in API and SPI calls
prefixed v. un-prefixed === 5.3 -> 6.0 compatibility changes
The original driving force behind these series of changes is an effort to be as proactive as possible
about designing compatibility between 5.3 and 6.0.
==== Type system changes ==== Type system changes
Use of NavigableRole, back-ported from 6.0 Use of NavigableRole, back-ported from 6.0 rather than plain String