[hibernate-dev] 6.0 - design question: "model navigation" exposed as an API?

Steve Ebersole steve at hibernate.org
Fri Mar 10 08:24:35 EST 2017


Well the "if it makes sense" is what I am trying to gauge ;)

On Fri, Mar 10, 2017 at 12:57 AM Christian Beikov <
christian.beikov at gmail.com> wrote:

> In that case I'd say let's do it if it makes sense :)
>
>
> Mit freundlichen Grüßen,
> ------------------------------------------------------------------------
> *Christian Beikov*
> Am 10.03.2017 um 00:14 schrieb Steve Ebersole:
> >
> > That's basically exactly what @Incubating means - we are exposing this
> > new API/SPI but users should fully expect the contracts to change.
> > Basically the annotated API/SPI is not held to our normal
> > compatibility rules - this is a new thing and we assume it will evolve
> > in use
> >
> >
> > On Thu, Mar 9, 2017, 3:16 PM Christian Beikov
> > <christian.beikov at gmail.com <mailto:christian.beikov at gmail.com>> wrote:
> >
> >     Is there a definition to what @Incubating means? I'd rather not
> >     make it
> >     an API until we played a little with it for new features.
> >
> >
> >     Mit freundlichen Grüßen,
> >
>  ------------------------------------------------------------------------
> >     *Christian Beikov*
> >     Am 09.03.2017 um 17:35 schrieb Steve Ebersole:
> >     > Currently in 6.0 we have the notion of a Navigable which models
> >     any "piece"
> >     > of the application's domain model[1].  We also have the notion of
> >     > a NavigableVisitationStrategy which defines the strategy for
> >     handling the
> >     > visitation of the nodes in a Navigable tree.  In other words,
> >     Hibernate
> >     > defines a common visitor for how to walk the application's
> >     mapped domain
> >     > model and the NavigableVisitationStrategy implementation
> >     controls which
> >     > sub-trees are walked; e.g. we'd use this to apply JPA
> >     EntityGraphs or to
> >     > stop joining joinable Navigables after we have reached the
> >     > `max_fetch_depth` setting value.
> >     >
> >     > It is important to note that this is very, very different from
> >     JPA's model
> >     > and walking it.  JPA's model essentially precludes those model
> >     nodes from
> >     > defining relational mappings as part of its type system in any
> >     sane way;
> >     > this is due to various reasons because of the model's
> >     design[2].  This
> >     > Navigable walking would walk the real/full relational mapping
> model.
> >     >
> >     > The design question is whether we want to expose this "domain
> >     mode walking"
> >     > as a general public API feature.  This has been requested
> >     before; Max once
> >     > asked for it although I forget why.
> >     >
> >     > Making this an API means exposing quite a few things. Typical
> >     visitor
> >     > pattern, the visitor (NavigableVisitationStrategy) exposes
> >     "handle" methods
> >     > based on specific Navigable sub-types.  Those sub-types would
> >     need to be
> >     > moved to API.  I don't have a particular concern with that, just
> >     mentioning
> >     > it.
> >     >
> >     > Opinions on whether this should become an API?
> >     >
> >     > For sure we'd mark it @Incubating, if we decide to do it.
> >     >
> >     > [1] Short synopsis: Navigables include things like EntityPersister,
> >     > CollectionPersister, EmbeddedPersister, PersistentAttribute,
> >     > CollectionIndex, CollectionElement.  A Navigable is always
> >     relative to a
> >     > NaviagbleSource.  NaviagbleSources are any domain Navigable
> >     > (NavigableSource extends Navigable) which includes things like
> >     > EntityPersister, EmbeddedPersister, SingularPersistentAttribute,
> >     > CollectionElementEntity, CollectionElementEmbedded, etc .  The
> >     > NaviagbleSource will be null in the case of EntityPersister (as
> >     a root),
> >     > but in all other cases the NaviagbleSource is non-null.
> >     >
> >     > [2] I won't get into the reasons here, but we can certainly
> >     follow up if
> >     > anyone challenges that assertion.
> >     > _______________________________________________
> >     > hibernate-dev mailing list
> >     > hibernate-dev at lists.jboss.org <mailto:
> hibernate-dev at lists.jboss.org>
> >     > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >
> >     _______________________________________________
> >     hibernate-dev mailing list
> >     hibernate-dev at lists.jboss.org <mailto: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