[hibernate-dev] Using Hibernate ORM as automatic JPMS modules

Steve Ebersole steve at hibernate.org
Fri Dec 29 15:34:47 EST 2017


On Fri, Dec 22, 2017 at 5:33 AM Steve Ebersole <steve at hibernate.org> wrote:

>
> * When using ByteBuddy as the byte code provider, I still needed to have
>> Javassist around, as it's used in ClassFileArchiveEntryHandler. I
>> understand that eventually this should be using Jandex, but I'm wondering
>> whether we could (temporarily) change it to use ASM instead of Javassist
>> (at least when using ByteBuddy as byte code provider, which is based on
>> ASM), so people don't need to have Javassist *and* ByteBuddy when using
>> the
>> latter as byte code provider? This seems desirable esp. once we move to
>> ByteBuddy by default.
>>
>
> Yes, Sanne brought this up in Paris and it is something I will look at
> prior to a 5.3.0.Final
>

Actually this is different than what Sanne brought up.  I actually cannot
reproduce what Sanne is reporting.  If I had to guess he was not specifying
the bytecode provider to use "globally".  This is a special kind of setting
(we used to have a few) that can only be specified per-VM : either as a
root `hibernate.properties` or as a System property.  It has to do with how
Hibernate builds its mapping model, specifically
`org.hibernate.mapping.Component`.  Given the redesign of the bootstrap
process we may actually be able to remove that "VM wide" requirement.  I'll
look into that for 5.3.  BTW Sanne, I created a repo[1] showing that this
does indeed work when specified "properly".

Gunnar, what you are seeing is very different and I'm not sure of a way to
solve that yet.  That is all part of auto-discovery of resources (entities,
embeddables, converters, etc) during bootstrap.  We need to inspect the
file without loading the Class to look at its annotations.  We need
*something* to do that, whether that is Jandex, Javassist, etc.  Byte Buddy
may or may not have a similar facility.  The problem here is that the
Javassist dependency is needed for a very different purpose.  And without a
viable alternative solution, its going to have to stay that way.

[1] https://github.com/sebersole/orm-bytebuddy-no-javassist


More information about the hibernate-dev mailing list