Hibernate one to many mapping example [Annotation]
UPDATED: 24 July 2017
Tags:
Hibernate
,
one-to-many
We are going to understand hibernate one-to-many relationship on following table structure...
country table holds one-to-many relationship with state table. Where relationship id resides in state table.
Before we see the complete code, lets first understand how to define relationship in code.
Country.java, State.java
Source code (Country.java)
import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; /** * @author javaQuery * @date 11th April, 2017 * @Github: https://github.com/javaquery/Examples */ @Entity @Table(name = "country") public class Country implements Serializable { @Id @GeneratedValue @Column(name = "id") private Long id; @Column(name = "name") private String name; @OneToMany(mappedBy = "country" /*, fetch = FetchType.LAZY*/) private Set<State> states = new HashSet<State>(); //getter-setter }
Source code (State.java)
import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; /** * @author javaQuery * @date 15th June, 2017 * @Github: https://github.com/javaquery/Examples */ @Entity @Table(name = "state") public class State implements Serializable{ @Id @GeneratedValue @Column(name = "id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "country_id") private Country country; @Column(name = "name") private String name; //getter-setter }
Source code (OneToManyMappingExample.java)
import com.javaquery.bean.Country; import com.javaquery.bean.State; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * Hibernate one to many example. * * @author javaQuery * @date 15th June, 2017 * @Github: https://github.com/javaquery/Examples */ public class OneToManyMappingExample { public static void main(String[] args) { try { /* Create hibernate configuration. */ Configuration configuration = new Configuration(); configuration.configure("com\\javaquery\\database\\hibernate\\hibernate.cfg.xml"); /* Open session and begin database transaction for database operation. */ SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Country country = session.load(Country.class, 1L); if(!country.getStates().isEmpty()){ for (State state: country.getStates()) { System.out.println(state.getName()); } }else{ System.out.println("No states found!"); } } catch (Exception e) { e.printStackTrace(); } } }
Output
Hibernate: select country0_.id as id1_1_0_, country0_.name as name2_1_0_ from country country0_ where country0_.id=? Hibernate: select states0_.country_id as country_3_3_0_, states0_.id as id1_3_0_, states0_.name as name2_3_1_ from state states0_ where states0_.country_id=? Banglore Gujarat Mumbai
Tags:
Hibernate
,
one-to-many
0 comments :