May 06, 2017

#Part 5: Hibernate Interview Questions (Composite and Derived Identifiers)

Composite Identifiers
Hibernate also allows us to define composite identifiers. FYI, a composite id is represented by a primary key class with one or more persistent attributes.
Here are the conditions which a primary class need to fulfil:
  • It should be defined using @EmbeddedId or @IdClass annotations
  • It should be public, serializable and have a public no-arg constructor
  • It should implement equals() and hashCode() methods
  • The class's attributes can be basic, composite or ManyToOne while avoiding collections and OneToOne attributes.
@EmbeddedId


In the above example the EmployeeEntry object has an EmployeeEntryPK primary id formed of two attributes: empId and deptId.

@IdClass
The @IdClass annotation is similar to the @EmbeddedId, except the attributes are defined in the main entity class using @Id for each one. Let's rewrite the above example:


In the above example, both types of composite ids, the primary key class can also contain @ManyToOne attributes.

Hibernate also allows defining primary-keys made up of @ManyToOne associations combined with @Id annotation. In this case, the entity class should also fulfill the conditions of a primary-key class. The disadvantage of this method is that there's no separation between the entity object and the identifier.

Derived Identifiers
They are obtained from an entity's association using the @MapsId annotation.

-K Himaanshu Shuklaa..

No comments:

Post a Comment