[hibernate-dev] SQM domain type model
andrea boriero
dreborier at gmail.com
Thu Dec 3 11:03:34 EST 2015
after reading your mail, I'm more inclined towards the solution you started
implementing in SQM-28-2.
https://github.com/sebersole/hibernate-semantic-query/blob/SQM-28-2/hibernate-sqm/src/main/java/org/hibernate/sqm/domain/DomainMetamodel.java
Just a clarification, what do you mean when you say "the Hibernate ORM type
system is not very consumption friendly"
Thanks
On 3 December 2015 at 15:38, Steve Ebersole <steve at hibernate.org> wrote:
> SQM needs information about the domain model being queried. In the
> initial original Antlr redesign work I did, I opted for a completely new
> "type system" specific to the parsing. The main reason for this was to
> allow for "other consumers" (besides Hibernate ORM) of its services. By
> and large we have all agreed that should no longer be a design
> requirement. But that still leaves us with the question of what we should
> do in SQM moving forward. We have a few options on how to achieve this.
> At the highest level we could either reuse an existing type system or we
> could develop a "SQM specific" type system.
>
> Reusing an existing type system really boils down to 2 options:
> 1) Use the Hibernate ORM type system (Type, EntityPersister,
> CollectionPersister)
> 2) Use the JPA type system (javax.persistence.metamodel.Type, etc)
>
> I have a prototype[1] of SQM using the JPA type system. There are some
> major limitations to this approach, as well as some very significant
> benefits. The main benefit is that it makes it much more trivial to
> interpret JPA criteria queries (no conversion between type systems).
> However, as I said the limitations are pretty significant. Put simply, the
> JPA type system is very inflexible and certain concepts in Hibernate simply
> would not fit such; this includes ANY type mappings, dynamic
> (EntityType.MAP, etc) model types, BAG and IDBAG collections, etc. Also,
> it defines a lot of things we don't need nor care about for query
> translation. All in all, I'd vote against this.
>
> Using the HIbernate type system is a viable alternative. Though I think
> that works best if we move SQM in its entirety upstream into the ORM
> project (otherwise we have a bi-directional set of dependencies). The only
> drawback is that the Hibernate ORM type system is not very consumption
> friendly ;)
>
> The flip side is to develop a SQM-specific type system. We have 2
> prototypes of that at the moment. First[2] is the original one I pretty
> much copied directly over from the original Antlr redesign work I mentioned
> above. I'd against vote against this one; I started looking at
> alternatives for a (few) reason(s) ;) The second[3] is one I developed
> loosely based on the JPA type system, but more flexible, more aligned with
> Hibernate concepts and limited to just query translation-related concerns.
>
> I am open to alternatives too. Thoughts?
>
> [1]
>
> https://github.com/sebersole/hibernate-semantic-query/blob/SQM-28/hibernate-sqm/src/main/java/org/hibernate/sqm/domain/ExtendedMetamodel.java
> [2]
>
> https://github.com/sebersole/hibernate-semantic-query/blob/master/hibernate-sqm/src/main/java/org/hibernate/sqm/domain/ModelMetadata.java
> [3]
>
> https://github.com/sebersole/hibernate-semantic-query/blob/SQM-28-2/hibernate-sqm/src/main/java/org/hibernate/sqm/domain/DomainMetamodel.java
> _______________________________________________
> 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