[hibernate-dev] Fwd: Hibernate ORM modules published as major.minor and an alias for main

Steve Ebersole steve at hibernate.org
Thu Jan 15 09:12:01 EST 2015


master is that branch.  But remember that we pulled back the scope for 5.0.


On Thu, Jan 15, 2015 at 7:56 AM, Scott Marlow <smarlow at redhat.com> wrote:

> The change I mentioned for WFLY-4021, is merged in for WildFly 9.0.
>
> On 01/15/2015 07:42 AM, Sanne Grinovero wrote:
> > Hi Scott,
> > I'm not sure I completely understood your email, but from the example
> > it looks like you're having the alias relation in the opposite
> > direction.
>
> The WFLY-4021 change allows an application to depend on a specific
> major.minor version of Hibernate ORM:
>
> <property name="jboss.as.jpa.providerModule" value="org.hibernate:4.3" />
>
> >
> > We would need to have the actual jars into a module which has the
> > precise identifier, to match exactly the jars it contains.
> > Then we'd add an alias to specify that the "main" slot is the specific
> version.
>
> When we talked at the f2f, I said that we would do major.minor, I think
> that is the summary notes from the discussion.
>
> If we were to reverse the definitions, so that org.hibernate:main is an
> alias for a specific version of ORM (whether its using major.minor or
> major.minor.micro, it makes no difference to me) and that offers the
> advantages that your thinking of.
>
> Something to keep in mind, in this multiple ORM version world, is that
> the static javax.persistence api is not aware of modules currently.  By
> the fact that WildFly always loads org.hibernate:main first,
> org.hibernate:main is always first in the list returned by
> PersistenceProviderResolver.getPersistenceProviders().  In the module
> aware (container) deployment code in WildFly, we do check if the
> persistence unit specifies a jboss.as.jpa.providerModule property and
> use that to load the persistence provider from the specified module.
>
>
> >
> > For example:
> >
> > ## Actual Module
> > <module xmlns="urn:jboss:module:1.3" name="org.hibernate"
> slot="4.3.8.Final">
> >      <resources>
> >          <resource-root path="xyz-4.3.8.Final" />
> >          <....
> >      </resources>
> >     ...
> > </module>
> >
> > ## The alias
> > <module-alias xmlns="urn:jboss:module:1.3"
> >      name="org.hibernate" slot="main"
> >      target-name="org.hibernate" target-slot="4.3.8.Final" />
> >
> > By using this structure you can allow most applications to simply
> > depend on "org.hibernate" at slot "main". This is useful for the
> > majority of users, who know they want to depend on Hibernate and are
> > not too fuzzy about the version they use, or simply want the
> > "recommended" version, which is essentially what you decide is by
> > pulling upgrades into WildFly.
> >
> > But some of our frameworks who might need to depend on a specific
> > version of ORM would have the option to explicitly depend on
> > "org.hibernate" slot "4.3.8.Final", which is what we occasionally
> > need.
> > Also this would make it possible for the ORM project to release
> > "update packs", say a version 4.3.9.Final is released soon: users
> > would be able to drop this into their application server using slot
> > "4.3.9.Final" without risking to break other applications.
> >
> > We could also be a bit more fine-grained: are you still keeping
> > Hibernate 3 around in WildFly 9?
>
> My plan was to remove the Hibernate 3 integration code.  I started doing
> that about a year ago or so, on a WildFly branch that (almost) works
> against Hibernate master from back then.  That branch is very dusty now.
>
> Is there going to be a stable ORM 5.0 branch soon?  At some point, we
> can resume integrating Jipijapa with ORM 5.0 and integrating that with
> WildFly (not sure if that will be WildFly 9 or 10).
>
>
> > If yes, you might want to have a structure like this one:
> >
> > ## Actual Module
> > <module xmlns="urn:jboss:module:1.3" name="org.hibernate"
> slot="4.3.8.Final">
> >      <resources>
> >          <resource-root path="xyz-4.3.8.Final" />
> >      </resources>
> >     ...
> > </module>
> >
> > ## The 4.x alias
> > <module-alias xmlns="urn:jboss:module:1.3"
> >      name="org.hibernate" slot="4.x"
> >      target-name="org.hibernate" target-slot="4.3.8.Final" />
> >
> > ## The main alias
> > <module-alias xmlns="urn:jboss:module:1.3"
> >      name="org.hibernate" slot="main"
> >      target-name="org.hibernate" target-slot="4.x" />
> >
> > One could also think of introducing a 4.3.x level.. possibilities are
> > endless but the priority for us would be to be able to call out a
> > specific version.
> >
> > Thanks,
> > Sanne
> >
> >
> >
> > On 14 January 2015 at 17:12, Emmanuel Bernard <emmanuel at hibernate.org>
> wrote:
> >> FYI
> >>
> >>> Begin forwarded message:
> >>>
> >>> Date: 14 Jan 2015 17:30:59 CET
> >>> From: Scott Marlow <smarlow at redhat.com>
> >>> To: Emmanuel Bernard <emmanuel at hibernate.org>
> >>> Subject: Re: Hibernate ORM modules published as major.minor and an
> alias for main
> >>>
> >>> Hi Emmanuel,
> >>>
> >>> On 01/14/2015 11:06 AM, Emmanuel Bernard wrote:
> >>>> Hi Scott,
> >>>>
> >>>> In the f2f we discussed the idea of having ORM being published as
> major.minor and have an alias form main to the default WildFly targeted
> version.
> >>>> Is that in and for which WildFly version?
> >>>
> >>> I created https://issues.jboss.org/browse/WFLY-4021 and
> https://github.com/wildfly/wildfly/pull/6883 which got merged into
> WildFly 9.0.
> >>>
> >>> The change is that
> modules/system/layers/base/org/hibernate/4.3/module.xml was added and
> contains:
> >>> "
> >>> <module-alias xmlns="urn:jboss:module:1.3" name="org.hibernate.main"
> slot="4.3" target-name="org.hibernate"/>
> >>> "
> >>>
> >>> I think this is wrong though, as it should be:
> >>>
> >>> "
> >>> <module-alias xmlns="urn:jboss:module:1.3" name="org.hibernate"
> slot="4.3" target-name="org.hibernate"/>
> >>> "
> >>>
> >>> I'll reopen and push a new pull request.
> >>>
> >>>
> >>>>
> >>>> I am just trying the catch up.
> >>>>
> >>
> >> _______________________________________________
> >> hibernate-dev mailing list
> >> hibernate-dev at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
> _______________________________________________
> 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