Join Example using one to many in hibernate

0

Step1st:-  Create POJO Class for Vendor and Customer:-
package scs;
import java.util.Set;
public class Vendor {
   private int vid;
   private String vname;
   private Set children;
 
public Set getChildren() {
return children;
}
public void setChildren(Set children) {
this.children = children;
}
public int getVid() {
return vid;
}
public void setVid(int vid) {
this.vid = vid;
}
public String getVname() {
return vname;
}
public void setVname(String vname) {
this.vname = vname;
}  
}
package scs;
public class Customer {
  private int customerid;
  private String customername;
  private int fid;
public int getCustomerid() {
return customerid;
}
public void setCustomerid(int customerid) {
this.customerid = customerid;
}
public String getCustomername() {
return customername;
}
public void setCustomername(String customername) {
this.customername = customername;
}
public int getFid() {
return fid;
}
public void setFid(int fid) {
this.fid = fid;
}
   }
Step2nd:-  Create hbm.xml file for vendor and customer
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="scs.Vendor" table="tbl_vendor">
<id name="vid" >
<generator class="assigned"></generator>
</id>
<property name="vname" />
<set name="children" cascade="all" >
<key column="fid"></key>
<one-to-many class="scs.Customer" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="scs.Customer" table="tbl_customer">
<id name="customerid" >
<generator class="assigned"></generator>
</id>
<property name="customername" />
</class>
</hibernate-mapping>
Step3rd:-  add hbm file in cfg.xml file 
<?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>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hdb1</property>
<property name="connection.username">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">create</property>
<property name="show_sql">true</property>
<mapping resource="vendor.hbm.xml"></mapping>
<mapping resource="customer.hbm.xml"></mapping>
 <!--  <mapping resource="hibernate.hbm.xml"></mapping>
 <mapping resource="admin.hbm.xml"></mapping>-->
</session-factory>
</hibernate-configuration>
Step4th:-
Add Record in vendor and customer object for database insertion:
package scs;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class MappingExample {
  public static void main(String args[])
  {
    Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory();
Session s = sf.openSession();
Customer c1 = new Customer();
c1.setCustomerid(1001);
c1.setCustomername("abc");
Customer c2 = new Customer();
c2.setCustomerid(1002);
c2.setCustomername("mno");
Vendor v = new Vendor();
v.setVid(1);
v.setVname("v101");
Set st = new HashSet<Customer>();
st.add(c1);
st.add(c2);
v.setChildren(st);
Transaction tx = s.beginTransaction();
s.save(v);
tx.commit();
s.close();
  }
}
Step 5th:-  Apply join (inner,left,right,full )
package scs;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.util.*;
public class JoinExample {
public static void main(String[] args) {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory();
Session s = sf.openSession();
Query q = s.createQuery("select v.vid ,v.vname ,c.customername from Vendor v inner join v.children c");
List lst = q.list();
Iterator it = lst.iterator();
while(it.hasNext())
{
Object arr[] = (Object[])it.next();
System.out.println(arr[0] +" "+arr[1]);
}
}
}


Tags

Post a Comment

0Comments

POST Answer of Questions and ASK to Doubt

Post a Comment (0)