In this hibernate topic we need to know that tha majority of the many to many association and collection of vlaues shown previously all map to tables with composite keys, even though it has been suggested that entities should have synthetic identifiers. When we have the pure association table does not seem to benefit much from many association and collections of values to a table with a surrogate key.
The <idbag> element lets you map a List (or Collection) with bag semantics. For example:
<idbag name="lovers" table="LOVERS">
<collection-id column="ID" type="long">
<many-to-many column="PERSON2" class="Person" fetch="join"/>
An <idbag> has a synthetic id generator, just like an entity class. A different surrogate key is assigned to each collection row. Hibernate does not, however, provide any mechanism for discovering the surrogate key value of a particular row.
The update performance of an <idbag> supersedes a regular <bag>. Hibernate can locate individual rows efficiently and update or delete them individually, similar to a list, map or set.
In the current implementation, the native identifier generation strategy is not supported for <idbag> collection identifiers.