Hibernate Many To One Insert Operation



We will use following files
Parent.java
Children.java
hibernate.cfg.xml
HibernateEngine.java

Queries
CREATE TABLE PARENTS_DATA (PARENT_ID INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20));


CREATE TABLE CHILDREN_DATA (CHILD_ID INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),AGE INT,PARENT_ID INT);


Parent.java
@Entity
@Table(name="PARENTS_DATA")

public class Parent {


@Id
@GeneratedValue(strategy=IDENTITY)
@Column(name="PARENT_ID")

private int id=0;


@Column(name="NAME")
private String name;


@OneToMany(fetch=FetchType.LAZY, targetEntity=Children.class, cascade=CascadeType.ALL)
@JoinColumn(name="PARENT_ID",referencedColumnName="PARENT_ID")

private Set children;


// provide set and get methods for all members


Children.java
@Entity
@Table(name="CHILDREN_DATA")

public class Children {


@Id
@GeneratedValue
@Column(name="CHILD_ID")

private int id;


@Column(name="NAME")
private String name;


@Column(name="AGE")
private int age;


@ManyToOne(fetch=FetchType.LAZY, targetEntity=Parent.class,cascade=CascadeType.ALL)
@JoinColumn(name="PARENT_ID",referencedColumnName="PARENT_ID")

private Parent parentObj;


 // provide set and get methods for all members


hibernate.cfg.xml
<?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/mydb</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">false</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="javafiles.Parent"/>
<mapping class="javafiles.Children"/>
</session-factory>
</hibernate-configuration>


HibernateEngin.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateEngine {
public static void main(String[] javaPlanet)
{
System.out.println(" .......ENGINE START ............");
System.out.println(" .. MANY TO ONE ANNONTATION INSERT LESSON ..");


Configuration condigurationObj = new Configuration();
condigurationObj.configure("hibernate.cfg.xml");
SessionFactory factoryObj = condigurationObj.buildSessionFactory();
Session sessionObj = factoryObj.openSession();


Parent parentObj=new Parent();
parentObj.setName("Karna");


Children childObj1=new Children();
childObj1.setName("Abhi");
childObj1.setAge(11);
childObj1.setParentObj(parentObj);
Children childObj2=new Children();


childObj2.setName("Adi");
childObj2.setAge(10);
childObj2.setParentObj(parentObj);


Transaction transaction=sessionObj.beginTransaction();
sessionObj.save(childObj1);
sessionObj.save(childObj2);
transaction.commit();


System.out.println(".. DATA INSERTED SUCCESSFULLY ..");
sessionObj.close();
factoryObj.close();
System.out.println(".......ENGINE STOP ..........");
}


}