[hibernate-dev] Bytecode interception and attribute name versus attribute index
Steve Ebersole
steve at hibernate.org
Thu Nov 12 21:32:30 EST 2015
On Thu, Nov 12, 2015 at 2:44 PM Sanne Grinovero <sanne at hibernate.org> wrote:
> Sounds like a very interesting patch, I agree with you that there's
> much potential.
> Although Steve from your description it seems like you don't think it can
> work?
>
Not sure I follow. You agree with the potential of the idea I am
proposing, but then point out how I don't think it will work. I am
confused :)
I guess I think there are different shades of "it works". I mean heck "it
works" as is already. I think it works *best* if there is no need to
"translate" from one canonical form to another. In other words, if
persisters and bytecode enhancements and dirty tracking all understood the
same attribute indexes I think that is by far the optimal situation
performance-wise.
I would expect something among the lines of what Gunnar described to
> be feasible: to let the persisters figure out the right numbers when
> they are created (once only). But I am not familiar enough with this
> code area to get in the details.
>
But that's not what Gunnar proposed. Its the same thing I asked him to
clarify. He proposes the "other way"; have the enhancer define the order
and the persisters pick it up from the enhancer. Could that work? I
guess. Really I have no idea, so many unknowns there.
About the method you mentioned " $$_hibernate_read_name()" : who
> invokes that, and when is the code which invokes that method
> generated?
> I'm assuming that would be part of the persister, so it means
> persister implementations are defined at runtime via bytecode
> manipulation?
>
That is a method generated by the enhancer. Generally speaking it builds a
reader/writer method pair for each "enhanceable" field. For readers, the
name of the method follows the pattern "$$_hibernate_read_{fieldName}().
The callers of this method are all done via enhancement as well.
More information about the hibernate-dev
mailing list