Hibernate upgrade

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Hibernate upgrade

Adel Atallah
Hi devs,

As you may know, we are currently using a pretty old version of
Hibernate in XWiki and we could benefit from its upgrade. The new
version should bring many bug and security fixes (even though they
don't all apply to our current version) along with better APIs and the
possibility to integrate other tools (such as other / newer libraries
or a better connection pool such as the one mentioned in [1])

Currently, I've been trying to make the following upgrades:
* 3.6.9 to 4.0.1
* 4.0.1 to 4.3.11
* 4.3.11 to 5.0.12

The goal is to arrive at version 5.4.0, which is at this date the
latest stable version.
I chose to make the upgrade step by step to avoid having to much
issues to solve at once.

So far, I've made a pull request ([2]) that you can check for the 4.0.1 upgrade.
Here are some of the issues that I've encounter during the upgrades:
3.6.9 to 4.0.1:
* Conflicting dependencies: I had to exclude some dependencies in the pom file.
* The org.hibernate.Session#connection method removal [3]: I'm either
using the Session#doWork method or the Session#createSQLQuery one.
* The org.hibernate.connection.ConnectionProvider interface has
changed: I had to adapt the DBCPConnectionProvider class that we have,
mostly to keep backward compatibility, using C3P0ConnectionProvider as
a model.
* The Session#getSession(EntityMode) method has been removed [4]: I
have no idea how to replace that so we need to test it properly.
* Some attributes in org.hibernate.cfg.Configuration have been
removed: This has mostly an impact on the custom mapping injection
which we need to check.

4.0.1 to 4.3.11:
* A change in the hibernate schema update generation makes the update
fail [5]: I had to add a property in the hibernate file but I don't
think this is the best solution.

4.3.11 to 5.0.12:
* The org.hibernate.cfg.Configuration has changed again removing many
methods that we were using

There are some other issues that I've not mentioned or discovered yet.

So for me the biggest issues are:
* The schema update: I think we should start using the hibernate one
instead of our own (except for migration made with liquibase).
* The custom mapping injection: We will need to rewrite it a bit if we
want to upgrade to 5.x.

The goal for now is to make the 4.0.1 upgrade work.

Please let me know what you think or if you have any questions.

Thanks,
Adel

[1] https://jira.xwiki.org/browse/XWIKI-8286?focusedCommentId=96486l#comment-96486
[2] https://github.com/xwiki/xwiki-platform/pull/1012
[3] https://hibernate.atlassian.net/browse/HHH-2603
[4] https://hibernate.atlassian.net/browse/HHH-6330
[5] https://hibernate.atlassian.net/browse/HHH-8162
Reply | Threaded
Open this post in threaded view
|

Re: Hibernate upgrade

Paul Libbrecht-2
Hello Adel,

a small word of warning: each upgrade of `hibernate.cfg.xml` is a kind of traumatic experience for a simple installation. It would be good not to do several of them!

paul

On 7 Jan 2019, at 10:47, Adel Atallah wrote:

> Hi devs,
>
> As you may know, we are currently using a pretty old version of
> Hibernate in XWiki and we could benefit from its upgrade. The new
> version should bring many bug and security fixes (even though they
> don't all apply to our current version) along with better APIs and the
> possibility to integrate other tools (such as other / newer libraries
> or a better connection pool such as the one mentioned in [1])
>
> Currently, I've been trying to make the following upgrades:
> * 3.6.9 to 4.0.1
> * 4.0.1 to 4.3.11
> * 4.3.11 to 5.0.12
>
> The goal is to arrive at version 5.4.0, which is at this date the
> latest stable version.
> I chose to make the upgrade step by step to avoid having to much
> issues to solve at once.
>
> So far, I've made a pull request ([2]) that you can check for the 4.0.1 upgrade.
> Here are some of the issues that I've encounter during the upgrades:
> 3.6.9 to 4.0.1:
> * Conflicting dependencies: I had to exclude some dependencies in the pom file.
> * The org.hibernate.Session#connection method removal [3]: I'm either
> using the Session#doWork method or the Session#createSQLQuery one.
> * The org.hibernate.connection.ConnectionProvider interface has
> changed: I had to adapt the DBCPConnectionProvider class that we have,
> mostly to keep backward compatibility, using C3P0ConnectionProvider as
> a model.
> * The Session#getSession(EntityMode) method has been removed [4]: I
> have no idea how to replace that so we need to test it properly.
> * Some attributes in org.hibernate.cfg.Configuration have been
> removed: This has mostly an impact on the custom mapping injection
> which we need to check.
>
> 4.0.1 to 4.3.11:
> * A change in the hibernate schema update generation makes the update
> fail [5]: I had to add a property in the hibernate file but I don't
> think this is the best solution.
>
> 4.3.11 to 5.0.12:
> * The org.hibernate.cfg.Configuration has changed again removing many
> methods that we were using
>
> There are some other issues that I've not mentioned or discovered yet.
>
> So for me the biggest issues are:
> * The schema update: I think we should start using the hibernate one
> instead of our own (except for migration made with liquibase).
> * The custom mapping injection: We will need to rewrite it a bit if we
> want to upgrade to 5.x.
>
> The goal for now is to make the 4.0.1 upgrade work.
>
> Please let me know what you think or if you have any questions.
>
> Thanks,
> Adel
>
> [1] https://jira.xwiki.org/browse/XWIKI-8286?focusedCommentId=96486l#comment-96486
> [2] https://github.com/xwiki/xwiki-platform/pull/1012
> [3] https://hibernate.atlassian.net/browse/HHH-2603
> [4] https://hibernate.atlassian.net/browse/HHH-6330
> [5] https://hibernate.atlassian.net/browse/HHH-8162

signature.asc (523 bytes) Download Attachment