Mapping Collection of Embeddable (Composite) Types – JPA with Hibernate

/, JPA/Mapping Collection of Embeddable (Composite) Types – JPA with Hibernate
Note:
Maven dependencies used all over JPA tutorials same. Please follow "Setting up Project" section to understand about project configuration.
persistence.xml and other code files reused from How to Persist an Entity in data base using JPA?
Each Sample application from download includes SQL file also.

Database Tables Structure :

  • Contact_Address table is Collection table.Contact_Address not owning its own identifier (Primary Key).
  • USER_ID not a primary key of Contact_Address, the value of USER_ID is primary key of USER Table.
  • There is no foreign key relation between USER and Contact_Address (do not confuse with one-to-many relation mapping, there is no foreign key relation ).
  • To map Contact_Address we have to create Composite value type (Embeddable), not an Entity Type.

ContactAddress.java :

@Embeddable :

  • Defines a class whose instances are stored as an intrinsic part of an owning entity and share the identity of the entity. Each of the persistent properties or fields of the embedded object is mapped to the database table for the entity. It don’t have own identifier. In this tutorial ContactAddress is Embeddable.

@ElementCollection :

  • Defines a collection of instances of a basic type or embeddable class. Must be specified if the collection is to be mapped by means of a collection table. This annotation will be used to map collection basic value type or collection of Embeddable types.
  • @ElementCollection annotation is used to map either Basic Value type or Composite Value type.
  • At owning Entity(User) side not require to use @Embedded annotation, because Embeddable data stored in separate collection table.
  • Line numbers 23,24 from below code snippet describes the mapping the Collection of Embeddables.

@CollectionTable :

  • Specifies the table that is used for the mapping of collections of basic or embeddable types.Applied to the collection-valued field or property.

@JoinColumn :

  • In this Example @JoinColumn annotation used to map User entity Id  value(Primary key value) to the Contacts collection table’s ID column.
  • I will discuss more about @JoinColumn annotation in association mapping section.

Code Snippet for Mapping List of Embeddables :

Note:
To understand Hibernate Composite(Embeddable) value types follw JPA Composite Mapping
Download Application – JPA-Collection-Composites.zip (14 KB)

Leave A Comment