Tuesday 6 March 2018

24.0 Hibernate One-to-One Mapping

One-to-One mapping


Concept of Primary key and Foreign Key








Create the tables in you database



















ONE TO ONE UNI-DIRECTIONAL

Cascade Save Example

--------------------------------------------------------------------------------------------
Instructor.java
--------------------------------------------------------------------------------------------
package com.demo.spring.entitiy;



import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;

import javax.persistence.Table;



@Entity

@Table(name="instructor")

public class Instructor {



 @Id

 @GeneratedValue(strategy=GenerationType.IDENTITY)

 @Column(name="id")

 private int id;

 

 @Column(name="first_name")

 private String first_name;

 

 @Column(name="last_name")

 private String last_name;

 

 @Column(name="email")

 private String email;



 @OneToOne(cascade=CascadeType.ALL)

 @JoinColumn(name="instructor_detail_id")

 private InstructorDetail instructorDetail;



 public Instructor(){}



 public Instructor(String first_name, String last_name, String email) {

  super();

  this.first_name = first_name;

  this.last_name = last_name;

  this.email = email;

 }



 public int getId() {

  return id;

 }



 public void setId(int id) {

  this.id = id;

 }



 public String getFirst_name() {

  return first_name;

 }



 public void setFirst_name(String first_name) {

  this.first_name = first_name;

 }



 public String getLast_name() {

  return last_name;

 }



 public void setLast_name(String last_name) {

  this.last_name = last_name;

 }



 public String getEmail() {

  return email;

 }



 public void setEmail(String email) {

  this.email = email;

 }



 public InstructorDetail getInstructorDetail() {

  return instructorDetail;

 }



 public void setInstructorDetail(InstructorDetail instructorDetail) {

  this.instructorDetail = instructorDetail;

 }



 @Override

 public String toString() {

  return "Instructor [id=" + id + ", first_name=" + first_name

    + ", last_name=" + last_name + ", email=" + email

    + ", instructorDetail=" + instructorDetail + "]";

 }



 

}

--------------------------------------------------------------------------------------------
InstructorDetail.java
--------------------------------------------------------------------------------------------
package com.demo.spring.entitiy;



import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;



@Entity

@Table(name="instructor_detail")

public class InstructorDetail {



 @Id

 @GeneratedValue(strategy=GenerationType.IDENTITY)

 @Column(name="id")

 private int id;

 

 @Column(name="youtube_channel")

 private String youtubeChannel;

 

 @Column(name="hobby")

 private String hobby;

 

 public InstructorDetail(){

  

 }



 public InstructorDetail(String youtubeChannel, String hobby) {

  super();

  this.youtubeChannel = youtubeChannel;

  this.hobby = hobby;

 }



 public int getId() {

  return id;

 }



 public void setId(int id) {

  this.id = id;

 }



 public String getYoutubeChannel() {

  return youtubeChannel;

 }



 public void setYoutubeChannel(String youtubeChannel) {

  this.youtubeChannel = youtubeChannel;

 }



 public String getHobby() {

  return hobby;

 }



 public void setHobby(String hobby) {

  this.hobby = hobby;

 }



 @Override

 public String toString() {

  return "InstructorDetail [id=" + id + ", youtubeChannel="

    + youtubeChannel + ", hobby=" + hobby + "]";

 }

 

}


--------------------------------------------------------------------------------------------
CreateDemo.java
--------------------------------------------------------------------------------------------
package com.demo.spring.test;



import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;



import com.demo.spring.entitiy.Instructor;

import com.demo.spring.entitiy.InstructorDetail;



public class CreateDemo {



 public static void main(String[] args) {

  SessionFactory factory=new Configuration()

  .configure("hibernate.cfg.xml")

  .addAnnotatedClass(Instructor.class)

  .addAnnotatedClass(InstructorDetail.class)

  .buildSessionFactory();

  

  Session session=factory.getCurrentSession();

  

  

  try{

   session=factory.getCurrentSession();

   

   Instructor tempInstructor=new Instructor("Maurya","Sudarshan","sudarshan.maurya@tiwari.com");

   

   InstructorDetail tempInstructorDetail=new InstructorDetail("http://www.sudarshan.maurya.com","Luv 2 sleep"); 

   

   tempInstructor.setInstructorDetail(tempInstructorDetail);

   

   System.out.println("saving : " +tempInstructor);

   session.beginTransaction();

   

   session.save(tempInstructor);

   

   session.getTransaction().commit();

  }

  finally{

   session.close();

  }

 }



}


--------------------------------------------------------------------------------------------
OUTPUT
--------------------------------------------------------------------------------------------
Mar 06, 2018 4:13:33 AM org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {5.2.14.Final}

Mar 06, 2018 4:13:33 AM org.hibernate.cfg.Environment <clinit>

INFO: HHH000206: hibernate.properties not found

Mar 06, 2018 4:13:34 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>

INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}

Mar 06, 2018 4:13:34 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)

Mar 06, 2018 4:13:34 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 
buildCreator

INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/bikesh?useSSL=false]

Mar 06, 2018 4:13:34 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 
buildCreator

INFO: HHH10001001: Connection properties: {user=root, password=****}

Mar 06, 2018 4:13:34 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 
buildCreator

INFO: HHH10001003: Autocommit mode: false

Mar 06, 2018 4:13:34 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl
$PooledConnections <init>

INFO: HHH000115: Hibernate connection pool size: 1 (min=1)

Mar 06, 2018 4:13:34 AM org.hibernate.dialect.Dialect <init>

INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect

saving : Instructor [id=0, first_name=Maurya, last_name=Sudarshan, email=sudarshan.maurya@tiwari.com,
 instructorDetail=InstructorDetail 
[id=0, youtubeChannel=http://www.sudarshan.maurya.com, hobby=Luv 2 sleep]]

Hibernate: insert into instructor_detail (hobby, youtube_channel) values (?, ?)

Hibernate: insert into instructor (email, first_name, instructor_detail_id, last_name) values (?, ?, ?, ?)


Cascade Delete Example

--------------------------------------------------------------------------------------------
DeleteDemo.java
--------------------------------------------------------------------------------------------
package com.demo.spring.test;



import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;



import com.demo.spring.entitiy.Instructor;

import com.demo.spring.entitiy.InstructorDetail;



public class DeleteDemo {



 public static void main(String[] args) {

  SessionFactory factory=new Configuration()

  .configure("hibernate.cfg.xml")

  .addAnnotatedClass(Instructor.class)

  .addAnnotatedClass(InstructorDetail.class)

  .buildSessionFactory();

  

  Session session=factory.getCurrentSession();

  

  

  try{

   session=factory.getCurrentSession();

   

   session.beginTransaction();

   

   int theId=1;

   Instructor tmpInstructor=session.get(Instructor.class, theId);

   

   System.out.println("Found  instuctor : "+ tmpInstructor);

   if(tmpInstructor !=null){

    System.out.println("deleting : " + tmpInstructor);

    session.delete(tmpInstructor);

   }

   

   

   session.getTransaction().commit();

  }

  finally{

   session.close();

  }

 }



}


--------------------------------------------------------------------------------------------
OUTPUT
--------------------------------------------------------------------------------------------
Mar 06, 2018 4:11:08 AM org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {5.2.14.Final}

Mar 06, 2018 4:11:08 AM org.hibernate.cfg.Environment <clinit>

INFO: HHH000206: hibernate.properties not found

Mar 06, 2018 4:11:08 AM org.hibernate.annotations.common.reflection.java
.JavaReflectionManager <clinit>

INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}

Mar 06, 2018 4:11:08 AM org.hibernate.engine.jdbc.connections.internal
.DriverManagerConnectionProviderImpl configure

WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)

Mar 06, 2018 4:11:08 AM org.hibernate.engine.jdbc.connections.internal
.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL 
[jdbc:mysql://localhost:3306/bikesh?useSSL=false]

Mar 06, 2018 4:11:08 AM org.hibernate.engine.jdbc.connections.internal
.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001001: Connection properties: {user=root, password=****}

Mar 06, 2018 4:11:08 AM org.hibernate.engine.jdbc.connections.internal
.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001003: Autocommit mode: false

Mar 06, 2018 4:11:08 AM org.hibernate.engine.jdbc.connections.internal
.DriverManagerConnectionProviderImpl$PooledConnections <init>

INFO: HHH000115: Hibernate connection pool size: 1 (min=1)

Mar 06, 2018 4:11:09 AM org.hibernate.dialect.Dialect <init>

INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect

Hibernate: select instructor0_.id as id1_0_0_, instructor0_.email as email2_0_0_, 
instructor0_.first_name as first_na3_0_0_, instructor0_.instructor_detail_id
 as instruct5_0_0_, instructor0_.last_name as last_nam4_0_0_, instructor1_.id
 as id1_1_1_, instructor1_.hobby as hobby2_1_1_, instructor1_.youtube_channel
 as youtube_3_1_1_ from instructor instructor0_ left outer join instructor_detail
 instructor1_ on instructor0_.instructor_detail_id=instructor1_.id where instructor0_.id=?

Found  instuctor : Instructor [id=1, first_name=Bikesh, last_name=Kumar, 
email=bikesh.kumar@tiwari.com, instructorDetail=InstructorDetail [id=1,
 youtubeChannel=http://www.bikesh.kumar.com, hobby=Luv 2 code]]

deleting : Instructor [id=1, first_name=Bikesh, last_name=Kumar, 
email=bikesh.kumar@tiwari.com, instructorDetail=InstructorDetail [id=1,
 youtubeChannel=http://www.bikesh.kumar.com, hobby=Luv 2 code]]

Hibernate: delete from instructor where id=?

Hibernate: delete from instructor_detail where id=?



















ONE TO ONE BI-DIRECTIONAL



Cascade Read Example

--------------------------------------------------------------------------------------------
Instructor.java
--------------------------------------------------------------------------------------------
package com.demo.spring.entitiy;



import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;

import javax.persistence.Table;



@Entity

@Table(name="instructor")

public class Instructor {



 @Id

 @GeneratedValue(strategy=GenerationType.IDENTITY)

 @Column(name="id")

 private int id;

 

 @Column(name="first_name")

 private String first_name;

 

 @Column(name="last_name")

 private String last_name;

 

 @Column(name="email")

 private String email;



 @OneToOne(cascade=CascadeType.ALL)

 @JoinColumn(name="instructor_detail_id")

 private InstructorDetail instructorDetail;



 public Instructor(){}



 public Instructor(String first_name, String last_name, String email) {

  super();

  this.first_name = first_name;

  this.last_name = last_name;

  this.email = email;

 }



 public int getId() {

  return id;

 }



 public void setId(int id) {

  this.id = id;

 }



 public String getFirst_name() {

  return first_name;

 }



 public void setFirst_name(String first_name) {

  this.first_name = first_name;

 }



 public String getLast_name() {

  return last_name;

 }



 public void setLast_name(String last_name) {

  this.last_name = last_name;

 }



 public String getEmail() {

  return email;

 }



 public void setEmail(String email) {

  this.email = email;

 }



 public InstructorDetail getInstructorDetail() {

  return instructorDetail;

 }



 public void setInstructorDetail(InstructorDetail instructorDetail) {

  this.instructorDetail = instructorDetail;

 }



 @Override

 public String toString() {

  return "Instructor [id=" + id + ", first_name=" + first_name

    + ", last_name=" + last_name + ", email=" + email

    + ", instructorDetail=" + instructorDetail + "]";

 }



 


}

--------------------------------------------------------------------------------------------
Instructordetail.java
--------------------------------------------------------------------------------------------
package com.demo.spring.entitiy;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="instructor_detail")
public class InstructorDetail {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="youtube_channel")
private String youtubeChannel;
@Column(name="hobby")
private String hobby;
@OneToOne(mappedBy="instructorDetail",cascade=CascadeType.ALL)
private Instructor instructor;
public Instructor getInstructor() {
return instructor;
}

public void setInstructor(Instructor instructor) {
this.instructor = instructor;
}

public InstructorDetail(){
}

public InstructorDetail(String youtubeChannel, String hobby) {
super();
this.youtubeChannel = youtubeChannel;
this.hobby = hobby;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getYoutubeChannel() {
return youtubeChannel;
}

public void setYoutubeChannel(String youtubeChannel) {
this.youtubeChannel = youtubeChannel;
}

public String getHobby() {
return hobby;
}

public void setHobby(String hobby) {
this.hobby = hobby;
}

@Override
public String toString() {
return "InstructorDetail [id=" + id + ", youtubeChannel="
+ youtubeChannel + ", hobby=" + hobby + "]";
}
}

--------------------------------------------------------------------------------------------
GetInstructordetaildemo.java
--------------------------------------------------------------------------------------------
package com.demo.spring.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.demo.spring.entitiy.Instructor;
import com.demo.spring.entitiy.InstructorDetail;

public class GetInstructorDetaildemo {

public static void main(String[] args) {
SessionFactory factory=new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Instructor.class)
.addAnnotatedClass(InstructorDetail.class)
.buildSessionFactory();
Session session=factory.getCurrentSession();
try{
session=factory.getCurrentSession();
session.beginTransaction();
int theId=2;
InstructorDetail tempInstructorDetail=session.get(InstructorDetail.class, theId);
System.out.println("tempInstructorDetail : "+tempInstructorDetail);
System.out.println("the associated instructor : "+tempInstructorDetail.getInstructor());
session.getTransaction().commit();
}
finally{
session.close();
}
}

}


--------------------------------------------------------------------------------------------
OUTPUT
--------------------------------------------------------------------------------------------
Mar 07, 2018 12:53:04 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.14.Final}
Mar 07, 2018 12:53:04 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 07, 2018 12:53:04 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Mar 07, 2018 12:53:04 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Mar 07, 2018 12:53:04 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/bikesh?useSSL=false]
Mar 07, 2018 12:53:04 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
Mar 07, 2018 12:53:04 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Mar 07, 2018 12:53:04 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
Mar 07, 2018 12:53:05 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Hibernate: select instructor0_.id as id1_1_0_, instructor0_.hobby as hobby2_1_0_, instructor0_.youtube_channel as youtube_3_1_0_, instructor1_.id as id1_0_1_, instructor1_.email as email2_0_1_, instructor1_.first_name as first_na3_0_1_, instructor1_.instructor_detail_id as instruct5_0_1_, instructor1_.last_name as last_nam4_0_1_ from instructor_detail instructor0_ left outer join instructor instructor1_ on instructor0_.id=instructor1_.instructor_detail_id where instructor0_.id=?
tempInstructorDetail : InstructorDetail [id=2, youtubeChannel=http://www.amitesh.kumar.com, hobby=Luv 2 eat]
the associated instructor : Instructor [id=2, first_name=Amitesh, last_name=Kumar, email=amitesh.kumar@tiwari.com, instructorDetail=InstructorDetail [id=2, youtubeChannel=http://www.amitesh.kumar.com, hobby=Luv 2 eat]]




Cascade Delete

--------------------------------------------------------------------------------------------
DeleteinstructorDetailDemo.java
--------------------------------------------------------------------------------------------
package com.demo.spring.test;

import org.hibernate.Session;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.demo.spring.entitiy.Instructor;

import com.demo.spring.entitiy.InstructorDetail;

public class DeleteInstructorDetailDemo {


public static void main(String[] args) {

SessionFactory factory=new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Instructor.class)
.addAnnotatedClass(InstructorDetail.class)
.buildSessionFactory();

Session session=factory.getCurrentSession();

try{
session=factory.getCurrentSession();
session.beginTransaction();

int theId=2;

InstructorDetail tempInstructordetail=session.get(InstructorDetail.class, theId);
System.out.println("Instructordetail : "+tempInstructordetail);

System.out.println("The associated instructor : "+tempInstructordetail.getInstructor());

System.out.println("Deleting tempInstructorDetail : "+tempInstructordetail);
session.delete(tempInstructordetail);

session.getTransaction().commit();
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
factory.close();
session.close();
}

}



}

--------------------------------------------------------------------------------------------
OUTPUT
--------------------------------------------------------------------------------------------

Mar 07, 2018 2:00:56 AM org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {5.2.14.Final}
Mar 07, 2018 2:00:56 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 07, 2018 2:00:56 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Mar 07, 2018 2:00:56 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Mar 07, 2018 2:00:56 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/bikesh?useSSL=false]
Mar 07, 2018 2:00:56 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
Mar 07, 2018 2:00:56 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Mar 07, 2018 2:00:56 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
Mar 07, 2018 2:00:56 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Hibernate: select instructor0_.id as id1_1_0_, instructor0_.hobby as hobby2_1_0_, instructor0_.youtube_channel as youtube_3_1_0_, instructor1_.id as id1_0_1_, instructor1_.email as email2_0_1_, instructor1_.first_name as first_na3_0_1_, instructor1_.instructor_detail_id as instruct5_0_1_, instructor1_.last_name as last_nam4_0_1_ from instructor_detail instructor0_ left outer join instructor instructor1_ on instructor0_.id=instructor1_.instructor_detail_id where instructor0_.id=?
Instructordetail : InstructorDetail [id=2, youtubeChannel=http://www.amitesh.kumar.com, hobby=Luv 2 eat]
The associated instructor : Instructor [id=2, first_name=Amitesh, last_name=Kumar, email=amitesh.kumar@tiwari.com, instructorDetail=InstructorDetail [id=2, youtubeChannel=http://www.amitesh.kumar.com, hobby=Luv 2 eat]]
Deleting tempInstructorDetail : InstructorDetail [id=2, youtubeChannel=http://www.amitesh.kumar.com, hobby=Luv 2 eat]
Hibernate: delete from instructor where id=?
Hibernate: delete from instructor_detail where id=?
Mar 07, 2018 2:00:58 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop

INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/bikesh?useSSL=false]


















Delete without Cascade

--------------------------------------------------------------------------------------------
InstructorDetail.java
--------------------------------------------------------------------------------------------

package com.demo.spring.entitiy;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="instructor_detail")
public class InstructorDetail {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="youtube_channel")
private String youtubeChannel;
@Column(name="hobby")
private String hobby;
@OneToOne(mappedBy="instructorDetail",cascade={CascadeType.DETACH,CascadeType.MERGE,
CascadeType.PERSIST,CascadeType.PERSIST,CascadeType.REFRESH})
private Instructor instructor;
public Instructor getInstructor() {
return instructor;
}

public void setInstructor(Instructor instructor) {
this.instructor = instructor;
}

public InstructorDetail(){
}

public InstructorDetail(String youtubeChannel, String hobby) {
super();
this.youtubeChannel = youtubeChannel;
this.hobby = hobby;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getYoutubeChannel() {
return youtubeChannel;
}

public void setYoutubeChannel(String youtubeChannel) {
this.youtubeChannel = youtubeChannel;
}

public String getHobby() {
return hobby;
}

public void setHobby(String hobby) {
this.hobby = hobby;
}

@Override
public String toString() {
return "InstructorDetail [id=" + id + ", youtubeChannel="
+ youtubeChannel + ", hobby=" + hobby + "]";
}
}

--------------------------------------------------------------------------------------------
DeleteInstructorDetailDemo.java
--------------------------------------------------------------------------------------------
package com.demo.spring.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.demo.spring.entitiy.Instructor;
import com.demo.spring.entitiy.InstructorDetail;

public class DeleteInstructorDetailDemo {

public static void main(String[] args) {
SessionFactory factory=new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Instructor.class)
.addAnnotatedClass(InstructorDetail.class)
.buildSessionFactory();
Session session=factory.getCurrentSession();
try{
session=factory.getCurrentSession();
session.beginTransaction();
int theId=6;
InstructorDetail tempInstructordetail=session.get(InstructorDetail.class, theId);
System.out.println("Instructordetail : "+tempInstructordetail);
tempInstructordetail.getInstructor().setInstructorDetail(null);;
System.out.println("Deleting tempInstructorDetail : "+tempInstructordetail);
session.delete(tempInstructordetail);
session.getTransaction().commit();
}
catch(Exception e)
{
e.printStackTrace();
}
finally{

session.close();
}

}

}



--------------------------------------------------------------------------------------------
OUTPUT
--------------------------------------------------------------------------------------------
Mar 07, 2018 2:19:51 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.14.Final}
Mar 07, 2018 2:19:51 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 07, 2018 2:19:52 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Mar 07, 2018 2:19:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Mar 07, 2018 2:19:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/bikesh?useSSL=false]
Mar 07, 2018 2:19:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
Mar 07, 2018 2:19:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Mar 07, 2018 2:19:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
Mar 07, 2018 2:19:52 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Hibernate: select instructor0_.id as id1_1_0_, instructor0_.hobby as hobby2_1_0_, instructor0_.youtube_channel as youtube_3_1_0_, instructor1_.id as id1_0_1_, instructor1_.email as email2_0_1_, instructor1_.first_name as first_na3_0_1_, instructor1_.instructor_detail_id as instruct5_0_1_, instructor1_.last_name as last_nam4_0_1_ from instructor_detail instructor0_ left outer join instructor instructor1_ on instructor0_.id=instructor1_.instructor_detail_id where instructor0_.id=?
Instructordetail : InstructorDetail [id=6, youtubeChannel=http://www.sudarshan.maurya.com, hobby=Luv 2 sleep]
Deleting tempInstructorDetail : InstructorDetail [id=6, youtubeChannel=http://www.sudarshan.maurya.com, hobby=Luv 2 sleep]
Hibernate: update instructor set email=?, first_name=?, instructor_detail_id=?, last_name=? where id=?
Hibernate: delete from instructor_detail where id=?


















After delete


No comments:

Post a Comment