[hibernate-dev] API incompatibilities between Hibernate ORM 5.3 and 6.0

Steve Ebersole steve at hibernate.org
Thu Feb 15 23:05:44 EST 2018


I'm not sure what else to tell you.  Sure some things have been removed.

I'm not going to go through all of these right now.  If there are some in
particular you are interested please bring those of specifically.


On Thu, Feb 15, 2018 at 6:48 PM Gail Badner <gbadner at redhat.com> wrote:

> Hi Steve,
>
> The list I provided contains removals from your fork in wip/6.0 branch.
>
> IIUC, integrating changes from master will not restore what was deleted
> or moved to a different package.  After integrating from master and
> resolving conflicts, we'll have the same incompatibilities.
>
> Am I missing something? Is there some other branch I should be comparing?
>
> Regards,
> Gail
>
> On Thu, Feb 15, 2018 at 9:13 AM, Steve Ebersole <steve at hibernate.org>
> wrote:
>
>> We have not integrated changes from master into 6.0 for a long time.  And
>> we probably won't for some time yet either.  So comparisons between 5.2 or
>> 5.3 and 6.0 right now are pointless
>>
>> On Wed, Feb 14, 2018 at 12:09 PM Gail Badner <gbadner at redhat.com> wrote:
>>
>>> I sent this last night with a huge report file, and it seems that it
>>> didn't
>>> get out.
>>>
>>> I'm re-sending without the report file...
>>>
>>> I ran japi-compliance-checker to compare differences in APIs
>>> between hibernate-core-5.3.0-SNAPSHOT.jar and hibernate-core-6.0.0-
>>> SNAPSHOT.jar.
>>>
>>> I ran it last week, so it may not include updates made since that time.
>>>
>>> Differences in Envers shown in the report should be disregarded because
>>> it
>>> only reflects that hibernate-envers was merged into hibernate-core. A
>>> separate comparison between hibernate-envers-5.3.0-SNAPSHOT.jar and
>>> hibernate-core-6.0.0-SNAPSHOT.jar needs to be done to see Envers changes.
>>>
>>> Chris will provide details about Envers differences in a separate email.
>>>
>>> The report is huge; it took me 3 to 4 hours to scan it. AFAICT, what I've
>>> documented are the only non-Envers API changes that could affect
>>> applications. They all involve removed classes/methods.
>>>
>>> My intention here is just to get this information out, so we have some
>>> solid examples to discuss.
>>>
>>> Regards,
>>> Gail
>>>
>>> ------------------------------------------------------------
>>> ----------------------------------------------------------------------
>>>
>>> Custom types: I am not familiar with how this will work in 6.0. Steve,
>>> please fill in details about any incompatibilities.
>>>
>>> org.hibernate.Criteria and org.hibernate.criterion.DetachedCriteria:
>>>
>>> In 5.0/5.1/5.2:
>>> * user guides say, "This appendix covers the legacy Hibernate
>>> org.hibernate.Criteria API, which should be considered deprecated. New
>>> development should focus on the JPA
>>> javax.persistence.criteria.CriteriaQuery
>>> API. Eventually, Hibernate-specific criteria features will be ported as
>>> extensions to the JPA javax.persistence.criteria.CriteriaQuery. For
>>> details
>>> on the JPA APIs, see Criteria."
>>>
>>> In 5.2/5.3:
>>> * Criteria and DetachedCriteria are not deprecated;
>>> * all SharedSessionContract#createCriteria methods are deprecated;
>>> * public static methods in DetachedCriteria are not deprecated;
>>>
>>> In 6.0:
>>> * Criteria and DetachedCriteria are removed along with other classes in
>>> org.hibernate.criterion.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications using legacy org.hibernate.Criteria will need to
>>> be updated to use javax.persistence.criteria.CriteriaQuery;
>>> 2) If Hibernate's implementation of
>>> javax.persistence.criteria.CriteriaQuery
>>> does not include the Hibernate-specific extensions that were available
>>> using org.hibernate.Criteria, applications may not have a straightforward
>>> way to change their applications to work.
>>>
>>> org.hibernate.Query
>>>
>>> In 5.1:
>>> * SharedSessionContract#createQuery returns org.hibernate.Query
>>> (org.hibernate.Session extends SharedSessionContract);
>>>
>>> In 5.2/5.3:
>>> * org.hibernate.Query was deprecated; org.hibernate.query.Query should be
>>> used instead; org.hibernate.query.Query extends org.hibernate.Query;
>>> * SharedSessionContract#createQuery moved to
>>> org.hibernate.query.QueryProducer#createQuery,
>>> returning  org.hibernate.query.Query (which extends org.hibernate.Query);
>>> (org.hibernate.Session extends QueryProducer);
>>>
>>> In 6.0:
>>> * org.hibernate.Query was removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that explicitly use org.hibernate.Query
>>> (including
>>> javax.persistence.Query.unwrap( org.hibernate.Query.class )) will have to
>>> be changed to use org.hibernate.query.Query.
>>>
>>> org.hibernate.SQLQuery:
>>>
>>> In 5.1:
>>> * SharedSessionContract#createSQLQuery returns org.hibernate.SQLQuery
>>> (org.hibernate.Session extends SharedSessionContract);
>>>
>>> In 5.2/5.3:
>>> * SQLQuery was deprecated; NativeQuery should be used instead;
>>> NativeQuery
>>> extends SQLQuery;
>>> * SharedSessionContract#createSQLQuery moved to
>>> QueryProducer#createSQLQuery, returning  NativeQuery (which extends
>>> SQLQuery); Session extends QueryProducer;
>>> * QueryProducer#createSQLQuery is deprecated;
>>> QueryProducer#createNativeQuery
>>> should be used instead
>>>
>>> In 6.0:
>>> * SQLQuery and org.hibernate.query.QueryProducer#createSQLQuery are
>>> removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications using Session#createSQLQuery will need to be
>>> updated to use Session#createNativeQuery.
>>> 2) Existing applications that explicitly use org.hibernate.SQLQuery
>>> (including javax.persistence.Query.unwrap( SQLQuery.class )) will have to
>>> be changed to use NativeQuery.
>>>
>>> org.hibernate.SynchronizeableQuery
>>>
>>> In 5.2/5.3:
>>> * org.hibernate.SynchronizeableQuery is not deprecated;
>>> * SQLQuery, NativeQuery and ProcedureCall extend org.hibernate.
>>> SynchronizeableQuery
>>>
>>> In 6.0:
>>> * org.hibernate.SynchronizeableQuery is moved to org.hibernate.query.
>>> SynchronizeableQuery;
>>> * NativeQuery and ProcedureCall extend
>>> org.hibernate.query.SynchronizeableQuery;
>>> (SQLQuery was removed as mentioned above)
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) In 6.0, existing applications that use
>>> org.hibernate.SynchronizeableQuery
>>> (including javax.persistence.Query.unwrap(
>>> org.hibernate.SynchronizeableQuery.class
>>> )) will need to be updated to use
>>> org.hibernate.query.SynchronizeableQuery
>>>
>>> org.hibernate.Session#createFilter
>>>
>>> In 5.1:
>>> * Session#createFilter returns org.hibernate.Query;
>>>
>>> In 5.2/5.3:
>>> * Session#createFilter returns org.hibernate.query.Query (which extends
>>> org.hibernate.Query);
>>> * org.hibernate.Session#createFilter is not deprecated;
>>>
>>> In 6.0:
>>> * org.hibernate.Session#createFilter is removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that call Session#createFilter will need to be
>>> updated (to what???); does collection filter functionality exist in
>>> 6.0???
>>>
>>> org.hibernate.Session.#getTypeHelper
>>>
>>> In 5.1/5.2/5.3:
>>> * org.hibernate.Session.#getTypeHelper returns org.hibernate.TypeHelper;
>>> * Session#getTypeHelper is not deprecated;
>>>
>>> In 6.0: org.hibernate.Session.#getTypeHelper is removed;
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) In 6.0, existing applications that call Session.#getTypeHelper will
>>> need
>>> to be updated (to what???).
>>>
>>> org.hibernate.metadata.ClassMetadata, org.hibernate.metadata.
>>> CollectionMetadata
>>>
>>> In 5.2/5.3:
>>> * SessionFactory#getClassMetadata(Class), #getClassMetadata(String),
>>> #getAllClassMetadata, #getCollectionMetadata, #getAllCollectionMetadata
>>> were deprecated; descriptors from
>>> javax.persistence.EntityManagerFactory#getMetamodel
>>> should be used instead; org.hibernate.SessionFactory extends
>>> javax.persistence.EntityManagerFactory;
>>>
>>> In 6.0:
>>> * ClassMetadata and CollectionMetadata removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) In 6.0, existing applications that call
>>> org.hibernate.SessionFactory#getClassMetadata(Class),
>>> #getClassMetadata(String), #getAllClassMetadata, #getCollectionMetadata,
>>> #getAllCollectionMetadata will need to be updated to use descripters from
>>> javax.persistence.EntityManagerFactory#getMetamodel.
>>>
>>> org.hibernate.stat.NaturalIdCacheStatistics
>>>
>>> In 5.2/5.3:
>>> * Statistics#getNaturalIdCacheStatistics returns
>>> NaturalIdCacheStatistics;
>>>
>>> In 6.0:
>>> * NaturalIdCacheStatistics is renamed to NaturalIdQueryStatistics;
>>> * NaturalIdQueryStatistics excludes #getHitCount, #getMissCount,
>>> #getPutCount, #getElementCountInMemory, #getElementCountOnDisk,
>>> #getSizeInMemory, and #getEntries which were originally in
>>> NaturalIdCacheStatistics; instead org.hibernate.stat.
>>> SecondLevelCacheStatistics#getHitCount, #getMissCount, #getPutCount,
>>>
>>> #getElementCountInMemory, #getElementCountOnDisk, #getSizeInMemory should
>>> be used.
>>> (SecondLevelCacheStatistics#getEntries was removed due to HHH-11356, so
>>> there is no substitute for org.hibernate.stat.NaturalIdCacheStatistics#
>>> getEntries;
>>> * Statistics#getNaturalIdCacheStatistics is renamed to
>>> #getNaturalIdStatistics.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that explicitly use NaturalIdCacheStatistics
>>> will
>>> need to be updated to use NaturalIdCacheStatistics.
>>> 2) Existing applications that call Statistics#getNaturalIdCacheStatistics
>>> will need to be updated to use Statistics#getNaturalIdCacheStatistics.
>>> 3) Existing applications that call org.hibernate.stat.
>>> NaturalIdCacheStatistics#getHitCount, #getMissCount, #getPutCount,
>>> #getElementCountInMemory, #getElementCountOnDisk, #getSizeInMemory, or
>>> #getEntries will need to be updated to obtain the
>>> SecondLevelCacheStatistics object for the particular natural ID using
>>> Statistics#getSecondLevelCacheStatistics( naturalIdRegionName??? ) (How
>>> is
>>> naturalIdRegionName determined???). The application will need to be
>>> changed
>>> to used SecondLevelCacheStatistics#getHitCount, #getMissCount,
>>> #getPutCount, #getElementCountInMemory, #getElementCountOnDisk, and
>>> #getSizeInMemory instead.
>>> 4) Existing applications that call NaturalIdCacheStatistics#getEntries
>>> will
>>> need to be updated to no longer call that method.
>>>
>>> org.hibernate.stat.SecondLevelCacheStatistics
>>>
>>> In 5.3:
>>> * SecondLevelCacheStatistics#getEntries is not deprecated;
>>>
>>> In 6.0:
>>> * SecondLevelCacheStatistics#getEntries is removed due to HHH-11356.
>>> * SecondLevelCacheStatistics no longer implements Serializable;
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that call SecondLevelCacheStatistics#getEntries
>>> will need to be updated to no longer call that method.
>>> 2) Existing applications that implement SecondLevelCacheStatistics (SPI)
>>> will need to explicitly implement Serializable.
>>>
>>> QueryStatistics#getCacheHitCount, #getCacheMissCount, and
>>> #getCachePutCount
>>>
>>> In 5.3:
>>> * QueryStatistics#getCacheHitCount, #getCacheMissCount, and
>>> #getCachePutCount are not deprecated;
>>>
>>> In 6.0:
>>> * QueryStatistics#getCacheHitCount, #getCacheMissCount, and
>>> #getCachePutCount were removed;
>>> * ConcurrentQueryStatisticsImpl implements QueryStatistics and still
>>> contains public methods, #getCacheHitCount, #getCacheMissCount, and
>>> #getCachePutCount (why???).
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that use
>>> org.hibernate.stat.QueryStatistics#getCacheHitCount,
>>> #getCacheMissCount, and #getCachePutCount will need to be changed (to use
>>> SecondLevelCacheStatistics???).
>>>
>>> org.hibernate.jpa.HibernateEntityManager
>>>
>>> In 5.2/5.3:
>>> * HibernateEntityManager is deprecated; Session (or SessionImplementor
>>> (SPI)) should be used instead;
>>> * Session extends HibernateEntityManager;
>>>
>>> In 6.0:
>>> * HibernateEntityManager is removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) In 6.0, existing applications that  explicitly use
>>> org.hibernate.jpa.HibernateEntityManager
>>> (including javax.persistence.EntityManager.unwrap(
>>> HibernateEntityManager.class )) will have to be changed to use Session
>>> (or
>>> SessionImplementor (SPI)).
>>>
>>> org.hibernate.jpa.HibernateEntityManagerFactory
>>>
>>> In 5.2/5.3:
>>> * HibernateEntityManagerFactory is deprecated; SessionFactory (or
>>> SessionFactoryImplementor (SPI)) should be used instead;
>>> * SessionFactory extends HibernateEntityManagerFactory;
>>>
>>> In 6.0:
>>> * HibernateEntityManagerFactory is removed.
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) In 6.0, existing applications that explicitly use
>>> org.hibernate.jpa.HibernateEntityManagerFactory
>>> (including javax.persistence.EntityManagerFactory.unwrap(
>>> HibernateEntityManagerFactory.class )) will have to be changed to use
>>> Session (or SessionImplementor (SPI)).
>>>
>>> org.hibernate.Hibernate#unproxy
>>>
>>> In 5.2/5.3:
>>> * Hibernate#unproxy was introduced by HHH-10831 in 5.2.10
>>>
>>> In 6.0:
>>> * the fix for HHH-10831 has not been incorporated into 6.0, so it is not
>>> present. Will it be??
>>>
>>> Incompatibilities migrating from 5.3 -> 6.0:
>>> 1) Existing applications that use Hibernate#unproxy will have to be be
>>> changed to explicitly initialize and unproxy.
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>
>>
>


More information about the hibernate-dev mailing list