[hibernate-dev] Master

Steve Ebersole steve at hibernate.org
Tue Apr 12 18:48:33 EDT 2016


Another question as I work through Query...

Currently both Session and StatelessSession inherit the same query creation
methods (returning org.hibernate.Query) via SharedSessionContract (which is
the common base type between them).  There is therefore an inherent
difficulty in having org.hibernate.Query extend from the JPA
javax.persistence.Query/TypedQuery when we only want Session to be an
EntityManager, not StatelessSession.

The simplest solution is to:

   1. Leave org.hibernate.Query as a "legacy Hibernate query contract" and
      move all of the existing SharedSessionContract query creation methods
      returning org.hibernate.Query directly to StatelessSession
      2. develop a new org.hibernate.query.Query (prefacing 6.0) that
      provides some of the "legacy Hibernate query contract" and extends from
      javax.persistence.Query.  Directly on Session we'd write new methods with
      the same name and args but returning this org.hibernate.query.Query.

This would give us 2 distinct Query hierarchies and allow the underlying
goal of Session extending EntityManager, but not StatelessSession.  We
could also flip these based on the knowledge that Session is more widely
used (less disruptive).

In other words we'd go from both Session and StatelessSession returning
org.hibernate.Query via inheriting from SharedSessionContract:

public interface SharedSessionContract {
    ...
     org.hibernate.Query createQuery(String hql);
}


to each Session and StatelessSession implementing different methods
altogether:

public interface StatelessSession {
    ...
     org.hibernate.Query createQuery(String hql);
}

public interface Session {
    ...
     org.hibernate.query.Query createQuery(String hql);
}


Unifying these returns across Session and StatelessSession would require
StatelessSession also being an EntityManager.  I had decided against that
for the same reasons that StatelessSession is distinct from Session.

Maybe a hybrid approach would be to break the query creation methods out of
SharedSessionContract into a new targeted interface named QueryProducer
which both Session and StatelessSession would implement.  That would allow
unifying the query creation return to something that implements JPA Query
contract too, but the source (Session/StatelessSession via QueryProducer)
would not necessarily need to implement EntityManager.


I think the QueryProducer route is probably the best option in terms of
allowing the consolidation but still allowing users to upgrade easily.

Thoughts?  Other options?  Hopefully I explained it well enough :)


On Tue, Apr 12, 2016 at 1:29 PM Steve Ebersole <steve at hibernate.org> wrote:

> Just a quick update on my progress.  I pretty much have
> Session/EntityManager and SessionFactory/EntiytManagerFactory sorted out as
> well as bootstrapping.
>
> I am currently working through the different Query hierarchies.
>
> Looking at what is left, I hope to be done with all of this by Thursday
>
> On Fri, Apr 8, 2016, 9:38 AM Sanne Grinovero <sanne at hibernate.org> wrote:
>
>> On 8 April 2016 at 15:04, Scott Marlow <smarlow at redhat.com> wrote:
>> > I'm curious if Search/OGM master branches would likely align with 5.2?
>> > Or some other branch?
>>
>> Good question, time for an update on these.
>>
>> We'll certainly have a version of Search compatible, at some point.
>> Not sure though about which version that shall be as we want to be
>> feature complete with our Elasticsearch work, and that will take a
>> couple more months at least so we'll see a bit longer than usual gap
>> between stable releases.
>>
>> Generally speaking we need at least a minor release for OGM or Search
>> to happen to upgrade the minor of ORM.
>> Since we didn't release yet, Search is still building with ORM 5.0.x
>> as a target.. we can then decide if we should skip ORM 5.1 and jump to
>> 5.2 when we'll be closer to the 5.6.0.Final release (of Search). As
>> far as I know only some test helpers broke though, so while I couldn't
>> test it all on both versions 5.0 and 5.1 of ORM, I think that they are
>> compatible at runtime and we also expect to be compatible with ORM
>> 5.2.
>>
>> With OGM we're now in candidate release phase for a ORM 5.0 compatible
>> version so not really thinking to bump it to ORM 5.1 yet.
>>
>> OGM tends to release less frequently, so in this case it is possible
>> that we might want to skip ORM 5.1 and go on 5.2 already to catch up,
>> but we can work on aiming a specific version if and when need arises.
>>
>> If you need any of these aligned let us know?
>>
>> Thanks,
>> Sanne
>>
>> >
>> > On 04/07/2016 11:34 AM, Steve Ebersole wrote:
>> >> As a follow up to this...
>> >>
>> >> Sanne had a great suggestion on HipChat.  What about turning all this
>> work
>> >> (sans SQM, etc) into a 5.2 as an "end of line for 5.0.  The idea would
>> be
>> >> 5.2 would include:
>> >>
>> >>     1. Move to Java 8
>> >>     2. Consolidation of hibernate-entitymanager into hibernate-core
>> >>     3. Deprecations, lots of deprecations :)
>> >>
>> >>
>> >> The idea is that then we could start 6.0 off "clean" by removing all
>> the
>> >> deprecations and layering in SQM work.
>> >>
>> >>
>> >>
>> >> On Thu, Apr 7, 2016 at 10:01 AM Vlad Mihalcea <mihalcea.vlad at gmail.com
>> >
>> >> wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> Until the merge is done, I'll take a break integrating the PRs that
>> are
>> >>> also relevant to the master branch.
>> >>>
>> >>> Vlad
>> >>>
>> >>> On Thu, Apr 7, 2016 at 5:57 PM, Steve Ebersole <steve at hibernate.org>
>> >>> wrote:
>> >>>
>> >>>> I agree that would be best.  If everyone agrees to stop pushing to
>> master
>> >>>> for the time being to allow me to finish this consolidation then I
>> can not
>> >>>> rush it as much
>> >>>>
>> >>>> On Wed, Apr 6, 2016 at 4:48 PM Chris Cranford <crancran at gmail.com>
>> wrote:
>> >>>>
>> >>>>> I have to concur with Sanne, a hold on master pushes until this
>> merge of
>> >>>>> artifacts is complete makes the most sense from an all around
>> logistics
>> >>>>> perspective.
>> >>>>>
>> >>>>> On Wed, Apr 6, 2016 at 4:04 PM, Sanne Grinovero <
>> sanne at hibernate.org>
>> >>>>> wrote:
>> >>>>>
>> >>>>>> Sounds reasonable. Do you think it will be unstable, i.e. should we
>> >>>>>> temporarily disable complaint emails from Jenkins, or even the full
>> >>>>>> build tasks?
>> >>>>>>
>> >>>>>> Also, this implies that any future backport becomes similarly
>> harder,
>> >>>>>> so you could also simply ask others to hold pushing on master, then
>> >>>>>> have people forward-port when it's done.. it's the same really but
>> >>>>>> that's why I mention it: as the complexity is interchangeable it's
>> a
>> >>>>>> fair request, with the difference you have:
>> >>>>>>   - others help you port the other patches forward rather than
>> doing it
>> >>>>> all
>> >>>>>> alone
>> >>>>>>   - the authors of the original patch doing it, that should make
>> it a
>> >>>> bit
>> >>>>>> simpler
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> On 6 April 2016 at 17:15, Steve Ebersole <steve at hibernate.org>
>> wrote:
>> >>>>>>> Obviously consolidating hibernate-entitymanager into
>> hibernate-core
>> >>>> is
>> >>>>> a
>> >>>>>>> fairly big effort.  And I am getting concerned about the
>> continuing
>> >>>>>> pushes
>> >>>>>>> to master in the meantime, many of which I know touch on code I
>> have
>> >>>>>>> changed.  My concern is obviously getting done all this
>> refactoring
>> >>>>> work
>> >>>>>>> and then having to sift through all of the changes that have been
>> >>>>> pushed
>> >>>>>> in
>> >>>>>>> the interim and attempting to work out the proper integration
>> >>>> strategy.
>> >>>>>>>
>> >>>>>>> Long story short... I am contemplating pushing to master sooner
>> >>>> rather
>> >>>>>> than
>> >>>>>>> later even though my refactoring may not be completely finished,
>> >>>>>> especially
>> >>>>>>> as we get towards the end of the week.
>> >>>>>>> _______________________________________________
>> >>>>>>> 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
>> >>>>>>
>> >>>>> _______________________________________________
>> >>>>> 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
>> >>>>
>> >>>
>> >>>
>> >> _______________________________________________
>> >> 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
>> _______________________________________________
>> 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