Hibernate one to one mapping example

This is 3 of 8 parts of tutorial series

Tutorial Content:

In this example, we will see how to implement one to one relationship using annotations.

Lets take example of Country and Capital.One Country has one capital.Following is relationship diagram among them.

Now to create above tables in database, you need to create two java files i.e. Country.java and Capital.java.

1.Country.java

Country class will be used to create COUNTRY table in database.
Create Country.java in src->org.arpit.javapostsforlearning.

package org.arpit.javapostsforlearning;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="COUNTRY")
public class Country {

    @Id
    @Column(name="Country_Name")
    String countryName ;

    @OneToOne
    @JoinColumn(name="Capital_Name")
    Capital capital;

    @Column(name="Country_Population")
    long countryPopulation;
    
    public Country()
    {

    }

    public Country(String countryName, long countryPopulation) {
  this.countryName = countryName;
  this.countryPopulation = countryPopulation;
 }

    public long getCountryPopulation() {
  return countryPopulation;
 }

    public void setCountryPopulation(long countryPopulation) {
  this.countryPopulation = countryPopulation;
 }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }

    public Capital getCapital() {
  return capital;
 }

    public void setCapital(Capital capital) {
  this.capital = capital;
 }
}

@OneToOne annotation is used to create one to one relationship between Country and Capital entities.
@joinColumn
is used to specify a mapped column for joining an entity association.

2.Capital.java

Capital class will be used to create CAPITAL table in database.
Create Capital.java in src->org.arpit.javapostsforlearning.

package org.arpit.javapostsforlearning;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="CAPITAL")
public class Capital {

 @Id
 @Column(name="Capital_Name")
 String capitalName;

 @Column(name="Capital_Population")
 long capitalPopulation;

 public Capital()
 {

 }
 public Capital(String capitalName, long capitalPopulation) {
  super();
  this.capitalName = capitalName;
  this.capitalPopulation = capitalPopulation;
 }

 public String getCapitalName() {
  return capitalName;
 }

 public void setCapitalName(String capitalName) {
  this.capitalName = capitalName;
 }
 public long getCapitalPopulation() {
  return capitalPopulation;
 }

 public void setCapitalPopulation(long capitalPopulation) {
  this.capitalPopulation = capitalPopulation;
 }

}

3.Hiberante.cfg.xml:

Create a file named “hibernate.cfg.xml” in src folder.






    

        
        com.microsoft.sqlserver.jdbc.SQLServerDriver
        jdbc:sqlserver://localhost:1433;database=UserInfo
        sa
        

        
        1

        
        org.hibernate.dialect.SQLServer2005Dialect

        
        thread

        
        org.hibernate.cache.NoCacheProvider

        
        true

        
        create

  
  

    


4.Main Class:

package org.arpit.javapostsforlearning;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateMain {

public static void main(String[] args) {

Configuration configuration=new Configuration();
configuration.configure();
ServiceRegistry sr= new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sf=configuration.buildSessionFactory(sr);
Session ss=sf.openSession();

Country countryIndia=new Country("India",50000000);
Capital capitalDelhi=new Capital("Delhi",4000000);
countryIndia.setCapital(capitalDelhi);
Country countryFrance=new Country("France",20000000);
Capital capitalParis=new Capital("Paris",1000000);
countryFrance.setCapital(capitalParis);
ss.beginTransaction();
ss.save(countryIndia);
ss.save(capitalDelhi);
ss.save(countryFrance);
ss.save(capitalParis);
ss.getTransaction().commit();
ss.close();

}

}

Project Struture:

5.SQL output:

COUNTRY table in database

CAPITAL table in database

Source code:

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.