| Author |
When to Use CollectionTable and when to Use OneToMany
|
RamandeepS Singh
Ranch Hand
Joined: Aug 25, 2009
Posts: 60
|
|
Hi
Can anybody suggest me, when should we use @CollectionTable and When to use @OneToMany
I think @OneToMany is always Beneficial
We we are Using @CollectionTable i think there will be no Improvement in Performance as well as it limits us that we can not persist without parent and even we can not query them independently
However we can achieve the same functionality with more flexibility by using @oneToMany, We Just have to write few lines more in our mapping
Please Correct me if i am Wrong
Thanks
Ramandeep Singh
|
 |
Bill Gorder
Bartender
Joined: Mar 07, 2010
Posts: 1282
|
|
See here:
http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection
An ElementCollection mapping can be used to define a collection of Embeddable objects. This is not a typical usage of Embeddable objects as the objects are not embedded in the source object's table, but stored in a separate collection table. This is similar to a OneToMany, except the target object is an Embeddable instead of an Entity. This allows collections of simple objects to be easily defined, without requiring the simple objects to define an Id or ManyToOne inverse mapping. ElementCollection can also override the mappings, or table for their collection, so you can have multiple entities reference the same Embeddable class, but have each store their dependent objects in a separate table.
The limitations of using an ElementCollection instead of a OneToMany is that the target objects cannot be queried, persisted, merged independently of their parent object. They are strictly privately-owned (dependent) objects, the same as an Embedded mapping. There is no cascade option on an ElementCollection, the target objects are always persisted, merged, removed with their parent. ElementCollection still can use a fetch type and defaults to LAZY the same as other collection mappings.
|
[How To Ask Questions][Read before you PM me]
|
 |
 |
|
|
subject: When to Use CollectionTable and when to Use OneToMany
|
|
|