[hibernate-dev] Possibly interesting use of Jandex

Sanne Grinovero sanne at hibernate.org
Tue Mar 11 12:45:19 EDT 2014


On 11 March 2014 10:59, Gunnar Morling <gunnar at hibernate.org> wrote:
> 2014-03-09 18:31 GMT+01:00 Steve Ebersole <steve at hibernate.org>:
>
> @Entity
>> interface Employee {
>>     ...
>> }
>>
>> 2) We'd dynamically generate a class to back this.  This generated class
>> can contain many of the performance tweaks we've been developing via
>> bytecode extensions (inline dirty-checking, "entity entry" info, etc).
>>
>
> In which situation would one make use of this? This seems to encourage
> "anemic data models", i.e. entities which are just data holders but don't
> contain any business logic. Often it's very useful though to add logic
> dealing with an entity's state to the entity type itself.

I actually see this going in the opposite direction. Allowing to move
all the mapping stuff to a different interface would encourage me to
think of the implementation as something which can include code, and I
could even have multiple types having different *implementations* if
the non-persistent methods.

It would also fight usage of inheritance, which is common among JPA
users and something that I'd gladly avoid.

Would be a very nice to have to avoid anemic data models.

>
> Will the class be generated at build or runtime? In case of the latter, how
> would one instantiate such entity?
>
> On a somewhat related note, I've been contemplating the notion of
> "partially mapped entities" in OGM [1]. Those would provide explicit
> properties only for some attributes (common ones, or ones which business
> logic relates to), while others would be exposed via a generic map
> structure:
>
>     @Entity
>     public class Product {
>
>         @Id
>         private long id;
>         private String name;
>         private BigDecimal price;
>
>         @AdditionalProperties
>         private Map<String, Object> additionalProperties;
>
>         // ...
>     }
>
> This would be very beneficial for NoSQL use cases where you want to pass
> through data from the store to a GUI in a generic manner or during
> prototyping/rapid development, where you manifest more and more attributes
> as explicit properties, just as business logic requires it.
>
> --Gunnar
>
> [1] https://hibernate.atlassian.net/browse/OGM-470
>
> _______________________________________________
>> 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