sneha's blog

[Example-Lab] Many-to-Many Mapping in Hibernate 5

In Many-To-Many mapping, we refer to a collection/list of the entity from another entity and vice versa; and used @ManyToOne annotation on declarations of both entity collections.

We will assume that each course can have many students (many to many), and each student can do many course(many to many).

We will create two entity classes, Course and Student and do a many to many mapping from course to student, and again many to many mapping from student to course.

[Example-Lab] One-to-Many and Many-to-One Mapping in Hibernate 5

In One-To-Many mapping, we refer to a collection/list of the entity from another entity and mark the reference variable as @OneToMany. The opposite of this relation from the second entity to the first will be Many-To-One and is annotated as @ManyToOne. 

We will assume that each course can have many students(one to many), but each student can do only one course(many to one).

We will create two entity classes, Course and Student and do a one to one mapping from course to student, and many to one from student to course.

[Example-Lab] One-to-One Mapping in Hibernate 5

In One-To-One mapping, we refer to one entity from another and mark the reference variable as @OneToOne.

In this example, we will consider two entity classes – student class and course class; and do a one to one mapping from course to student.

We will assume that there is a one-to-one mapping between a Course and Student – each course can be taken by only one student.  

Mappings in Hibernate 5

When referencing entities from other entities, we are mapping two entities whereas when referencing a value type we are embedding (or containing) a value type within an entity.

When mapping two entities, we annotate both classes as @Entity, and the mapping type is specified using the annotations @OneToOne, @OneToMany, @ManyToOne or @ManyToMany, over the reference variable declaration of an entity in another entity.

We will consider two entities for mapping examples – a student class and a course class.

Creating Composite Keys in Hibernate 5

A composite key is a primary key composed of multiple columns.

When you are creating a composite key, your persistent class must override the equals() and hashCode() method. This is required for for Hibernate caching to work correctly. It must also implement the Serializable interface.

Best way to do this is to create a class with all your composite key fields, mark it as @Embeddable and then annotate a field of that class type with @Id in your entity class.

@Embeddable

public class MyCompositeID implements Serializable {

int field1;

[Example-Lab] Eager and Lazy Fetch Types in Hibernate 5

We will see a simple example to illustrate the LAZY and EAGER Fetch in Hibernate.

Eager and Lazy Fetch Types in Hibernate 5

When you load an embeding class, it may load its embedded collections either lazily or eagerly.

 

Important points about eager and lazy fetch types in Hibernate

  1. By default, when you load an embedding class (E.g. User or Company) using session.get,

    • its embedded collections (E.g. AddressList or EmployeeList) is not actually retrieved from database, but only the top level fields are retrieved.

  2. The embedded collection is actually retrieved when you call the getter for that embedded collection.

[Example-Lab] Modifying the Attributes of the Embedded Class from Embedding Class in Hibernate 5

There might be situations where you would want to modify the attributes of the embedded class (eg. Address) within an embedding class (eg. User), for instance, changing the database column name for a field.

We can use @AttributeOverride annotation to override the details of a field of the embedded class and then enclose all such @AttributeOverride annotations inside @AttributeOverrides annotation.

[Example-Lab] Embedding Value Types Within an Entity Class in Hibernate 5

A value type is a type which doesn't have existence of its own, but belongs to an entity, like an user and his address. Value types are always completely owned by their containing entity.

We will embed an Address class inside a User class. The simplest way to embed a value type in an entity class is to treat the member variables of the embedded class (e.g. Address), the same way as we treat the member variables of the embedding class (e.g. User) by adding more columns to the entity table one column each for the value type class members

Embedding Value Types and Collections Within an Entity Class in Hibernate 5

We have already seen the definition and properties of an entity and value class in http://javajee.com/entities-and-value-types-in-hibernate-43. We will not see how we can actually embed a value type within an entity. We will also see how we can embed a collection inside an entity.

 

Pages

Search the Web

Custom Search

Searches whole web. Use the search in the right sidebar to search only within javajee.com!!!