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

Steve Ebersole steve at hibernate.org
Thu Mar 9 18:14:16 EST 2017


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>
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
> > 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