• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

A sense of style: @OneToMany or @ElementCollection?

 
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello, everybody!

First of all, I would like to say that I already posted this question in other forums:

https://forum.hibernate.org/viewtopic.php?f=1&t=1007832
http://forums.oracle.com/forums/thread.jspa?threadID=1997599&tstart=0

but as I haven't got any answer from there I'm posting it here too in the hope that I find one, as this is very important to me. This forum is my last hope.

In JPA 1.0 I could map the collection association to DocumentSubject (only accessible through the Document entity) like this:


In JPA 2.0 I can get rid of the DocumentSubjectId class, transform DocumentSubject in an @Embeddable and use the @ElementCollection annotation, like this:


So, my question is: what is the recommended to use in this case: relationships to entity classes, like in the first case, or collection of embedded classes, like the second case? Note that I will never access in my application the DocumentSubject separately from the Document class. It really belongs to the Document class. What would you use in JPA 2.0, and why?

Thank you in advance.

Marcos
 
Ranch Hand
Posts: 553
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Which to use is entirely up to you. I would normally recommend using the OneToMany, as typically even if a class starts out as embeddable, you eventually find that you would like to query and edit it independently.

Embeddables have a bunch of restrictions on them that Entitys do not (can't query directly, can't persist/merge/remove directly, JPA does not currently define inheritance, relationships restrictions).

Using an ElementCollection is much simpler however, so it does have its benefits, especially when prototyping.

 
Marcos APS
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you, James, I think I will stick with @OneToMany for now.

Marcos
 
reply
    Bookmark Topic Watch Topic
  • New Topic