This is 3 of 8 parts of tutorial series
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.
Create Country.java in src->org.arpit.javapostsforlearning.
@joinColumn
is used to specify a mapped column for joining an entity association.
Create Capital.java in src->org.arpit.javapostsforlearning.
Tutorial Content:
Part-1:Introduction to hibernate frameworkIn this example, we will see how to implement one to one relationship using annotations.
Part-2:Hibernate hello world example in eclipse
Part-3:Hibernate one to one mapping example
Part-4:Hibernate one to many mapping example
Part-5:Hibernate many to many mapping example
Part-6:Hibernate inheritance:Table per class hierarchy
Part-7:Hibernate inheritance:table per subclass
Part-8:Hibernate inheritance:Table per concrete class
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;@OneToOne annotation is used to create one to one relationship between Country and Capital entities.
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;
}
}
@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.<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;database=UserInfo</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.SQLServer2005Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping class="org.arpit.javapostsforlearning.Country"></mapping>
<mapping class="org.arpit.javapostsforlearning.Capital"></mapping>
</session-factory>
</hibernate-configuration>
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();
}
}
COUNTRY table in database
Source code:
Source:Download without jars files
Source + lib: Download with jar files
No comments:
Post a Comment