[hibernate-dev] Some proposals
Steve Ebersole
steve at hibernate.org
Sat Oct 24 14:40:34 EDT 2015
Koen, any thoughts on the "mapping model" proposal? FWIW, silence on this
list is taken by me to mean implicit agreement for me to do whatever I want
;)
On Wed, Oct 21, 2015 at 8:04 AM Steve Ebersole <steve at hibernate.org> wrote:
> Getting some proposals that have been rolling around in my head down on
> paper (electronically speaking)..
>
> *Caching SessionFactory state*
>
> The Jira[1] contains the details. The basic gist is to allow for slimming
> down the in-memory size of the SessionFactory based on how we store certain
> SF-scoped state. I do not have hard numbers that this would help
> performance, but I do know that the SessionFactory can be a large hit to
> "old gen" memory on a lot of systems and that minimizing the amount of such
> memory space in general helps with the operational performance of the VM;
> so I thought it might be worth some exploration. Let's please discuss this
> one on the Jira. Add any thoughts you may have, or vote it up if you think
> it makes sense.
>
>
> *Merge hibernate-core and hibernate-entitymanager*
>
> This is one we have discussed before. There is not a Jira for it
> specifically afaik. The idea would be to merge together the core and hem
> modules into a single module (jar). This has a lot of different benefits,
> which we have discussed before. The reason I am bringing it up now (again)
> is that there is a new looming benefit as we work on SQM. At the moment
> SQM defines its own "metamodel" contracts (org.hibernate.sqm.domain
> package). However, if we merged core and hem that would mean that the
> Hibernate core stuff would have access to the JPA metamodel definitions and
> therefore we could define SQM in terms of the JPA metamodel.
>
> The issue that has held us back in the past is different behaviors in the
> different event listeners implementations for certain events. However, I
> think every hard limitation is a result in listener and PC design in
> regards to cascading in that the listener itself says what operation to
> cascade. So, e.g. in core save/persist/merge/update operations are
> cascaded as save-update, whereas those operations in the JPA-based
> listeners cascade as merge. This has been the one sticky point that has
> held us back from doing this merging previously. The problem (imo) is that
> the PC has no concept of a "current operation context". This is why, e.g.,
> you see listeners for cascadable operations define method overloads; one
> taking a "context Map" and one not. Gail and I have discussed actually
> adding a concept such as this "current operation context" to the PC as a
> way around some other limitations and it would certainly help here too.
>
>
> *Some changes to mapping model*
>
> The inclusion of the completely new "mapping model" is being delayed
> indefinitely. In the meantime, I do propose that we pull some of the
> improvement concepts over to the existing mapping model (as defined in
> org.hibernate.mapping). Most of the changes I propose relate to relational
> side. A lot of it deals with aggregating related state (OO design).
>
> Koen, I'd especially like you thoughts as this would represent another
> change that I think affects you in tooling code. This would be work done
> as part of the "jandex-binding" work, which is still to-be-scheduled, so
> it's not like it adds work for you tomorrow :)
>
> Some (not exhaustive) specific changes include:
> * As mentioned above, I'd really like to rework at least the relational
> side. Specifically replace org.hibernate.mapping representations of Table,
> Column, Formula, etc with definitions more in line with the definitions we
> worked on in metamodel. This includes tables, columns, etc understanding
> the split between logical and physical naming, and keeping reference to
> both.
> * Defining associations based on a ForeignKey, rather than just a
> collection of columns (encapsulation). Whether the ForeignKey is generated
> is a whole different story.
> * More aggregation at the binding level. For example, RootClass currently
> exposes multiple pieces of information about an identifier (pk), rather
> than just a single "identifier descriptor". Same for caching descriptor,
> "fetching characteristics", etc.
>
>
> [1] - https://hibernate.atlassian.net/browse/HHH-10213
>
>
>
More information about the hibernate-dev
mailing list