HHH-10162 Inheritance and L2 cache
by Christian Beikov
Hey guys,
Steve said I should start a discussion about the possible solution for
HHH-10162 <https://hibernate.atlassian.net/browse/HHH-10162> so here we go.
While debugging the issue, I found out that the proxy is created at
DefaultLoadEventListener.createProxyIfNecessary() where it IMO should
consult the 2L cache first by calling existing =
loadFromSecondLevelCache( event, persister, keyToLoad );. The fix looks
easy, but I am not sure of the implications. Obviously this will affect
performance a little since it has to consult the L2 cache now.
I tried to start a discussion in the Dev room, but so far only Andrea,
Vlad and Chris have commented this. Has anyone a different idea for
implementing this?
--
Mit freundlichen Grüßen,
------------------------------------------------------------------------
*Christian Beikov*
8 years, 3 months
List of changes in JPA 2.2
by Gunnar Morling
Hi,
Related to the discussion this afternoon, this is the list of API changes
in JPA 2.2:
* all repeatable annotations marked with @Repeatable
* new annotations javax.persistence.SequenceGenerators and TableGenerators
(containing annotation types for repeatable annotations SequenceGenerator
and TableGenerator)
* new methods javax.persistence.Query#getResultStream() and
TypedQuery#getResultStream()
You can find the full diff below.
Cheers,
--Gunnar
=====
Comparing source compatibility of javax.persistence-2.2.0.jar against
javax.persistence-2.1.1.jar
WARNING: You are using the option '--ignore-missing-classes', i.e.
superclasses and interfaces that could not be found on the classpath are
ignored. Hence changes caused by these superclasses and interfaces are not
reflected in the output.
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.AssociationOverride (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.AssociationOverrides (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.AttributeOverride (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.AttributeOverrides (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT javax.persistence.Convert (not
serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.Converts (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT javax.persistence.JoinColumn
(not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.JoinColumns (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.MapKeyJoinColumn (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.MapKeyJoinColumns (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.NamedEntityGraph (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.NamedEntityGraphs (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.NamedNativeQuery (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.NamedNativeQueries (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT javax.persistence.NamedQuery
(not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.NamedQueries (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.NamedStoredProcedureQuery (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT:
value=javax.persistence.NamedStoredProcedureQueries (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.PersistenceContext (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.PersistenceContexts (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.PersistenceUnit (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.PersistenceUnits (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.PrimaryKeyJoinColumn (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.PrimaryKeyJoinColumns (+)
**** MODIFIED INTERFACE: PUBLIC ABSTRACT javax.persistence.Query (not
serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++* NEW METHOD: PUBLIC(+) java.util.stream.Stream getResultStream()
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.SecondaryTable (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.SecondaryTables (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.SequenceGenerator (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.SequenceGenerators (+)
+++ NEW ANNOTATION: PUBLIC(+) ABSTRACT(+)
javax.persistence.SequenceGenerators (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- -1.-1
+++ NEW INTERFACE: java.lang.annotation.Annotation
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+)
javax.persistence.SequenceGenerator[] value()
+++ NEW ANNOTATION: java.lang.annotation.Target
+++ NEW ELEMENT:
value=java.lang.annotation.ElementType.TYPE,java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD
(+)
+++ NEW ANNOTATION: java.lang.annotation.Retention
+++ NEW ELEMENT:
value=java.lang.annotation.RetentionPolicy.RUNTIME (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.SqlResultSetMapping (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.SqlResultSetMappings (+)
=== UNCHANGED ANNOTATION: PUBLIC ABSTRACT
javax.persistence.TableGenerator (not serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
+++ NEW ANNOTATION: java.lang.annotation.Repeatable
+++ NEW ELEMENT: value=javax.persistence.TableGenerators (+)
+++ NEW ANNOTATION: PUBLIC(+) ABSTRACT(+)
javax.persistence.TableGenerators (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- -1.-1
+++ NEW INTERFACE: java.lang.annotation.Annotation
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+)
javax.persistence.TableGenerator[] value()
+++ NEW ANNOTATION: java.lang.annotation.Target
+++ NEW ELEMENT:
value=java.lang.annotation.ElementType.TYPE,java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD
(+)
+++ NEW ANNOTATION: java.lang.annotation.Retention
+++ NEW ELEMENT:
value=java.lang.annotation.RetentionPolicy.RUNTIME (+)
**** MODIFIED INTERFACE: PUBLIC ABSTRACT javax.persistence.TypedQuery (not
serializable)
***! CLASS FILE FORMAT VERSION: 52.0 <- 50.0
===* UNCHANGED INTERFACE: javax.persistence.Query
+++* NEW METHOD: PUBLIC(+) java.util.stream.Stream getResultStream()
8 years, 3 months