JPA Relationship
In this section, you will know about the jpa relationship. JPA supports the relationship between entities.
There are following types of relationship:
JPA relationships are not bi-directional. JPA annotations are added to define the relationship. If, you want to make a relationship bi-directional to use a special attribute.
- One-to-one: A OneToOne relation mapping
to a single-value association to another entity. It has one-to-one multiplicity and infers the associated target entity from the type of the object being referenced.
Use of the @OneToOne Annotation:- Configure the fetch type to LAZY
- Configure the mapping to forbid null values (for non-primitive types) in case null values are inappropriate for your application
- Configure the associated target entity if it cannot be inferred from the type of the object being referenced
- Configure the operations that must be cascaded to the target of the association. For example, if the owning entity is removed, ensure that the target of the association is also removed
- One-to-many: JPA defines a OneToMany mapping for a many-valued association with one-to-many multiplicity.
Use of the @OneToMany Annotation:- Configure the fetch type to EAGER
- Configure the associated target entity because the Collection used is not defined using generics
- Configure the operations that must be cascaded to the target of the association: for example, if the owning entity is removed, ensure that the target of the association is also removed
- Configure the details of the join table used by TopLink JPA for uni-directional one-to-many relationships
- Many-to-one: JPA defines a ManyToOne mapping for a single-valued association to another entity class that has many-to-one multiplicity.
Use the @ManyToOne Annotation to:- Configure the fetch type to LAZY
- Configure the mapping to forbid null values (for non-primitive types) in case null values are inappropriate for your application
- Configure the associated target entity if it cannot be inferred from the type of the object being referenced
- Configure the operations that must be cascaded to the target of the association: for example, if the owning entity is removed, ensure that the target of the association is also removed
- Many-to-many: JPA defines a @ManyToMany mapping for a many-valued association with many-to-many multiplicity.
Use of the @ManyToMany annotation:- Declare the cardinality of the relationship
- Configure the fetch type to EAGER
- Configure the mapping to forbid null values (for non-primitive types) in case null values are inappropriate for your application
- Configure the associated target entity because the Collection used is not defined using generics
- Configure the operations that must be cascaded to the target of the association; for example, if the owning entity is removed, ensure that the target of the association is also removed
There are following types of cascade:
- CascadeType.PERSIST: When we persist and entity all the entities held in this field persist too. If you want to persist an entity and the fields dont use it fails.
- CascadeType.REMOVE: When we delete an entity all the entities held in this field delete too.
- CascadeType.REFRESH: When we refresh an entity all the entities held in this field refresh too.
- CascadeType.MERGE: When we merde an entity all the entities held in this flied merged too
The property cascade = CascadeType.ALL indicates that when we persist, remove, refresh or merge this entity all the entities held in this field would be persist, remove, delete or update.