0% found this document useful (0 votes)
15 views25 pages

Module 5 - DAO - Other Mappings

useful for mappings concept
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views25 pages

Module 5 - DAO - Other Mappings

useful for mappings concept
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

DAO and Hibernate Example

Lab11: Files required


1. Lab11A.java 2. Lab11B.java
3. Lab11C.java 4. Lab11D.java
5. DAOFactory.java 6. CustomerDAO.java
7. Customer.java 8. CustomerTO.java ***
9. HibernateCustomerDAO.java 10. HibernateUtil.java ***

1. Lab11A.java 3. Lab11C.java
package com. jlcindia.client; package com. jlcindia.client;

import com. jlcindia.dao.*; import com. jlcindia.dao.*;


import com. jlcindia.to.*; /*
/* * @Author : Srinivas Dande
* @Author : Srinivas Dande * @company : Java Learning Center
* @company : Java Learning Center * */
* */ public class Lab11C {
public class Lab11A { public static void main(String[] args) {
public static void main(String[] args) {
CustomerDAO cdao=DAOFactory.getCustomerDAO();
CustomerDAO cdao=DAOFactory.getCustomerDAO(); cdao.deleteCustomer(2);
CustomerTO cto=new }
CustomerTO("Sri","Sri@jlc",12345,"Blore",25000,"Activ }
e"); 4. Lab11D.java
cdao.addCustomer(cto); package com. jlcindia.client;
}
} import com. jlcindia.dao.*;
2. Lab11B.java import com. jlcindia.to.*;
package com. jlcindia.client; /*
* @Author : Srinivas Dande
import com. jlcindia.dao.*; * @company : Java Learning Center
import com. jlcindia.to.*; * */
/* public class Lab11D {
* @Author : Srinivas Dande public static void main(String[] args) {
* @company : Java Learning Center
* */ CustomerDAO cdao=DAOFactory.getCustomerDAO();
public class Lab11B {
public static void main(String[] args) { CustomerTO cto=cdao.getCustomerByCid(1);
CustomerDAO cdao=DAOFactory.getCustomerDAO(); System.out.println(cto);
CustomerTO cto=new
CustomerTO(2,"Sri","ss@cc",555,"Blore",5000,"Active") }
; }
cdao.updateCustomer(cto);
}
}

Java Learning Center 97 Hibernate5 Study Guide


5. DAOFactory.java @Column(name="cname")
package com. jlcindia.dao; private String cname;
/*
* @Author : Srinivas Dande @Column(name="email")
* @company : Java Learning Center private String email;
* */
public class DAOFactory { @Column(name="phone")
static CustomerDAO customerDAO; private long phone;
static {
customerDAO=new @Column(name="city")
HibernateCustomerDAO(); private String city;
}
public static CustomerDAO getCustomerDAO() { @Column(name="bal")
return customerDAO; private double balance;
}
} @Column(name="status")
6. CustomerDAO.java private String status;

package com. jlcindia.dao;


public Customer() {
System.out.println("Customer-D.C");
import com. jlcindia.to.*;
}
/*
* @Author : Srinivas Dande public Customer(String cname, String email, long phone,
* @company : CourseCube
String city, double balance, String status) {
* @see : www.coursecube.com
super();
* */
this.cname = cname;
public interface CustomerDAO {
this.email = email;
public void addCustomer(CustomerTO cto); this.phone = phone;
public void updateCustomer(CustomerTO cto);
this.city = city;
public void deleteCustomer(int cid);
this.balance = balance;
public CustomerTO getCustomerByCid(int cid);
this.status = status;
}
}

7. Customer.java public Customer(int cid, String cname, String email, long


package com. jlcindia.hibernate; phone, String city, double balance, String status) {
super();
import javax.persistence.*; this.cid = cid;
/* this.cname = cname;
* @Author : Srinivas Dande this.email = email;
* @company : Java Learning Center this.phone = phone;
* */ this.city = city;
@Entity this.balance = balance;
@Table(name="mycustomers") this.status = status;
public class Customer { }
@Id //Setters and Getters
@GeneratedValue(strategy = @Override
GenerationType.IDENTITY) public String toString() {
@Column(name="cid") return cid + "\t" + cname + "\t" + email + "\t" + phone +
private int cid; "\t" + city+ "\t" + balance+"\t"+status ;
}
}

Java Learning Center 98 Hibernate5 Study Guide


9. HibernateCustomerDAO.java }catch(Exception ex) {
package com. jlcindia.dao; ex.printStackTrace();
if(tx!=null)
import org.hibernate.*; tx.rollback();
import com. jlcindia.hibernate.*; }
import com. jlcindia.to.*; }
/* @Override
* @Author : Srinivas Dande public void deleteCustomer(int cid) {
* @company : Java Learning Center Transaction tx=null;
* */ try {
public class HibernateCustomerDAO implements SessionFactory sf=HibernateUtil.getSessionFactory();
CustomerDAO{ Session session=sf.openSession();
@Override tx=session.beginTransaction();
public void addCustomer(CustomerTO cto) {
Transaction tx=null; Customer cust=session.load(Customer.class, cid);
try { session.delete(cust);
SessionFactory sf=HibernateUtil.getSessionFactory();
Session session=sf.openSession(); tx.commit();
tx=session.beginTransaction(); session.close();
}catch(Exception ex) {
Customer cust=new ex.printStackTrace();
Customer(cto.getCname(),cto.getEmail(),cto.getPhone() if(tx!=null)
, cto.getCity(),cto.getBalance(), cto.getStatus()); tx.rollback();
session.save(cust); }
}
tx.commit(); @Override
session.close(); public CustomerTO getCustomerByCid(int cid) {
}catch(Exception ex) { CustomerTO cto=null;
ex.printStackTrace(); Transaction tx=null;
if(tx!=null) try {
tx.rollback(); SessionFactory sf=HibernateUtil.getSessionFactory();
} Session session=sf.openSession();
} tx=session.beginTransaction();
@Override
public void updateCustomer(CustomerTO cto) { Customer cust=session.load(Customer.class, cid);
Transaction tx=null; cto=new
try { CustomerTO(cust.getCid(),cust.getCname(),cust.getEmail
SessionFactory sf=HibernateUtil.getSessionFactory(); (),cust.getPhone(),cust.getCity(),cust.getBalance(),cust.g
Session session=sf.openSession(); etStatus());
tx=session.beginTransaction();
tx.commit();
Customer cust=new session.close();
Customer(cto.getCid(),cto.getCname(),cto.getEmail(),ct }catch(Exception ex) {
o.getPhone(), cto.getCity(),cto.getBalance(), ex.printStackTrace();
cto.getStatus()); if(tx!=null)
session.update(cust); tx.rollback();
}
tx.commit(); return cto;
session.close(); }
}

Java Learning Center 99 Hibernate5 Study Guide


DAO and Hibernate Example with Template Pattern

Lab12: Files required


1. Lab12A.java Same as Lab11 2. Lab12B.java Same as Lab11
3. Lab12C.java Same as Lab11 4. Lab12D.java Same as Lab11
5. DAOFactory.java Same as Lab11 6. CustomerDAO.java Same as Lab11
7. Customer.java Same as Lab11 8. CustomerTO.java *** Same as Lab11
9. HibernateTemplate.java 10. HibernateCustomerDAO.java
11. HibernateUtil.java ***

9. HibernateTemplate.java public void delete(Class myclass,Serializable id) {


package com. jlcindia.hibernate; Transaction tx=null;
try {
import java.io.*; SessionFactory
import org.hibernate.*; sf=HibernateUtil.getSessionFactory();
/* Session session=sf.openSession();
* @Author : Srinivas Dande tx=session.beginTransaction();
* @company : Java Learning Center
* */ Object obj=session.load(myclass,id);
public class HibernateTemplate { session.delete(obj);
public void save(Object obj) {
Transaction tx=null; tx.commit();
try { session.close();
SessionFactory sf=HibernateUtil.getSessionFactory(); }catch(Exception ex) {
Session session=sf.openSession(); ex.printStackTrace();
tx=session.beginTransaction(); if(tx!=null) tx.rollback();
session.save(obj); }
tx.commit(); }
session.close(); public Object load(Class myclass,Serializable id) {
}catch(Exception ex) { Object obj=null;
ex.printStackTrace(); Transaction tx=null;
if(tx!=null) tx.rollback(); try {
} SessionFactory
} sf=HibernateUtil.getSessionFactory();
public void update(Object obj) { Session session=sf.openSession();
Transaction tx=null; tx=session.beginTransaction();
try {
SessionFactory sf=HibernateUtil.getSessionFactory(); obj=session.load(myclass,id,LockMode.READ);
Session session=sf.openSession(); //obj=session.load(myclass,id);
tx=session.beginTransaction(); tx.commit();
session.update(obj); session.close();
tx.commit(); }catch(Exception ex) {
session.close(); ex.printStackTrace();
}catch(Exception ex) { if(tx!=null) tx.rollback();
ex.printStackTrace(); }
if(tx!=null) tx.rollback(); return obj;
} }
} }

Java Learning Center 100 Hibernate5 Study Guide


10. HibernateCustomerDAO.java
package com.jlcindia.dao;

import com. jlcindia.hibernate.*;


import com. jlcindia.to.*;
/*
* @Author : Srinivas Dande
* @company : Java Learning Center
* */
public class HibernateCustomerDAO implements CustomerDAO{
HibernateTemplate htemp=null;
public HibernateCustomerDAO(HibernateTemplate htemp) {
this.htemp=htemp;
}

@Override
public void addCustomer(CustomerTO cto) {
Customer cust=new Customer(cto.getCname(),cto.getEmail(),cto.getPhone(), cto.getCity(),cto.getBalance(),
cto.getStatus());
htemp.save(cust);
}

@Override
public void updateCustomer(CustomerTO cto) {
Customer cust=new Customer(cto.getCid(),cto.getCname(),cto.getEmail(),cto.getPhone(),
cto.getCity(),cto.getBalance(), cto.getStatus());
htemp.update(cust);
}

@Override
public void deleteCustomer(int cid) {
htemp.delete(Customer.class, cid);
}

@Override
public CustomerTO getCustomerByCid(int cid) {
Customer cust = (Customer)htemp.load(Customer.class, cid);
CustomerTO cto=new
CustomerTO(cust.getCid(),cust.getCname(),cust.getEmail(),cust.getPhone(),cust.getCity(),cust.getBalance(),cust.ge
tStatus());
return cto;
}
}

Java Learning Center 101 Hibernate5 Study Guide


Version Mapping
 Version Mapping is used to versioning the data or record of the table.
 This allows you to track the updation happened on various records of table.
 When you insert a new record, then version value will be 0.
 Whenever you update the record then version will be increased by one
automatically.
 version number will be provided by the Hibernate system automatically so don’t
include the version related variable in the constructor.

Version Mapping Example: Lab13


A)Tables Required
1) mycustomers1
cid cname email phone version
1 Sri [email protected] 99999 1

B) Hibernate Persistence Classes


1) Customer.java
@Entity
@Table(name=" mycustomers1")
public class Customer {

@Version
private int version;
}
Lab13: Files required
1. Lab13A.java 2. Lab13B.java
3. Customer.java 4. HibernateUtil.java

1. Lab13A.java
package com.coursecube.hibernate; Customer cust=new Customer("sd","[email protected]",333);
session.save(cust);
import org.hibernate.*;
/* tx.commit();
* @Author : Srinivas Dande session.close();
* @company : Java Learning Center
* */ } catch (Exception e) {
public class Lab13A { e.printStackTrace();
public static void main(String[] args) { }
try { }
SessionFactory sessionFactory }
=HibernateUtil.getSessionFactory();
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();

Java Learning Center 102 Hibernate5 Study Guide


2. Lab13B.java 3. Customer.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import org.hibernate.*; import javax.persistence.*;


/* @Entity
* @Author : Srinivas Dande @Table(name="mycustomers1")
* @company : Java Learning Center public class Customer {
* */ @Id
public class Lab13B { @GeneratedValue(strategy = GenerationType.IDENTITY)
public static void main(String[] args) { @Column(name="cid")
try { private int cid;
SessionFactory sessionFactory
=HibernateUtil.getSessionFactory(); @Column(name="cname")
Session session=sessionFactory.openSession(); private String cname;
Transaction tx=session.beginTransaction();
@Column(name="email")
Customer cust=session.load(Customer.class, 1); private String email;
System.out.println(cust);
@Column(name="phone")
cust.setEmail("[email protected]"); private long phone;

tx.commit(); @Version
session.close(); private int version;

} catch (Exception e) { public Customer() { }


e.printStackTrace();
} public Customer(String cname, String email, long phone)
} {
} super();
this.cname = cname;
this.email = email;
this.phone = phone;
}

//Setters and Getters

@Override
public String toString() {
return cid + "\t" + cname + "\t" + email + "\t" +
phone+"\t"+version ;
}

Java Learning Center 103 Hibernate5 Study Guide


Timestamp Mapping
 Timestamp Mapping is used to Time stamping the data i.e. you can track when the
record was updated recently.
 Hibernate System is responsible for providing the value for Timestamp variable. So
don’t include in constructor.

A)Tables Required
1) mycustomers2
cid cname email phone updatedDate
1 Sri [email protected] 99999 2019-07-29 20:05:04

B) Hibernate Persistence Classes


1) Customer.java
@Entity
@Table(name=" mycustomers2")
public class Customer {

@Version
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date tstamp;
}
Lab14: Files required
1. Lab14A.java Same as Lab13A 2. Lab14B.java Same as Lab13B
3. Customer.java 4. HibernateUtil.java

3. Customer.java @Column(name="phone")
package com.coursecube.hibernate; private long phone;

import java.sql.Timestamp; //@Version


import java.util.Date; //private Timestamp updatedTime;
import javax.persistence.*;
@Version
@Entity @Temporal(TemporalType.TIMESTAMP)
@Table(name="mycustomers2") private Date updatedTime;
public class Customer {
@Id public Customer() { }
@GeneratedValue(strategy = public Customer(String cname, String email, long phone) {
GenerationType.IDENTITY) this.cname = cname;
@Column(name="cid") this.email = email;
private int cid; this.phone = phone;
}
@Column(name="cname") //Setters and Getters
private String cname; @Override
public String toString() {
@Column(name="email") return cid + "\t" + cname + "\t" + email + "\t" +
private String email; phone+"\t"+updatedTime;
} }

Java Learning Center 104 Hibernate5 Study Guide


Avoiding Column Insertion

Lab15: Files required


1. Lab15A.java 2. Lab15B.java
3. Customer.java 4. HibernateUtil.java

1. Lab15A.java 2. Customer.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import org.hibernate.*; import javax.persistence.*;


public class Lab15A { @Entity
public static void main(String[] args) { @Table(name="mycustomers3")
try { public class Customer {
SessionFactory sessionFactory @Id
=HibernateUtil.getSessionFactory(); @GeneratedValue(strategy = GenerationType.IDENTITY)
Session session=sessionFactory.openSession(); @Column
Transaction tx=session.beginTransaction(); private int cid;

Customer cust=new @Column


Customer("sd","[email protected]",444,"Blore","Active"); private String cname;
session.save(cust);
@Column
tx.commit(); private String email;
} catch (Exception e) {
e.printStackTrace(); @Transient
} private long phone;
}
} @Column(name="city")
2. Lab15B.java private static String city;
package com.coursecube.hibernate;
private String status;
import org.hibernate.*;
public Customer() { }
public class Lab15B { public Customer(String cname, String email, long
public static void main(String[] args) { phone,String city,String status) {
try { super();
SessionFactory sessionFactory this.cname = cname;
=HibernateUtil.getSessionFactory(); this.email = email;
Session session=sessionFactory.openSession(); this.phone = phone;
Transaction tx=session.beginTransaction(); this.city=city;
this.status=status;
Customer cust=session.load(Customer.class, 1); }
System.out.println(cust); //Setters and Getters
@Override
tx.commit(); public String toString() {
} catch (Exception e) { return cid + "\t" + cname + "\t" + email + "\t" +
e.printStackTrace(); phone+"\t"+city+"\t"+status;
} }
} }
}

Java Learning Center 105 Hibernate5 Study Guide


Immutable Objects
Lab16: Files required
1. Lab16A.java 2. Lab16B.java
3. Customer.java 4. HibernateUtil.java

1. Lab16A.java 2. Customer.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import org.hibernate.*; import javax.persistence.*;


public class Lab16A { import org.hibernate.annotations.Immutable;
public static void main(String[] args) {
try { @Entity
SessionFactory sessionFactory @Table(name="mycustomers4")
=HibernateUtil.getSessionFactory(); @Immutable
Session session=sessionFactory.openSession(); public class Customer {
Transaction tx=session.beginTransaction(); @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Customer cust=new @Column(name="cid")
Customer("sri","[email protected]",555,"Blore"); private int cid;
session.save(cust);
@Column(name="cname")
tx.commit(); private String cname;
} catch (Exception e) {
e.printStackTrace(); @Column(name="email")
} private String email;
} }
@Column(name="phone")
2. Lab16B.java private long phone;
package com.coursecube.hibernate;
@Column(name="city")
import org.hibernate.*; private String city;
public class Lab16B {
public static void main(String[] args) { public Customer() { }
try { public Customer(String cname, String email, long
SessionFactory sessionFactory phone,String city) {
=HibernateUtil.getSessionFactory(); super();
Session session=sessionFactory.openSession(); this.cname = cname;
Transaction tx=session.beginTransaction(); this.email = email;
this.phone = phone;
Customer cust=session.load(Customer.class, 2); this.city=city;
System.out.println(cust); }
cust.setEmail("[email protected]"); //Setters and Getters
session.update(cust);
@Override
tx.commit(); public String toString() {
} catch (Exception e) { return cid + "\t" + cname + "\t" + email + "\t" +
e.printStackTrace(); phone+"\t"+city;
} }
} } }

Java Learning Center 106 Hibernate5 Study Guide


More About @Column Attributes
Objects
Lab17: Files required
1. Lab17A.java 2. Lab17B.java
3. Customer.java 4. HibernateUtil.java

1. Lab17A.java 2. Customer.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import org.hibernate.*; import javax.persistence.*;


public class Lab17A { /*
public static void main(String[] args) { * @Author : Srinivas Dande
try { * @company : Java Learning Center
SessionFactory sessionFactory * */
=HibernateUtil.getSessionFactory(); @Entity
Session session=sessionFactory.openSession(); @Table(name="mycustomers5")
Transaction tx=session.beginTransaction(); public class Customer {

Customer cust=new @Id


Customer("ds","[email protected]","12345"); @GeneratedValue(strategy = GenerationType.IDENTITY)
session.save(cust); @Column(name="cid")
private int cid;
tx.commit();
} catch (Exception e) { @Column(name="cname")
e.printStackTrace(); private String cname;
}
} } @Column(name="myemail",length = 10,nullable =
2. Lab17B.java true,unique = true,insertable = true,updatable = false)
package com.coursecube.hibernate; private String email;

import org.hibernate.*; @Column(name="myphone",length = 10,nullable =


public class Lab17B { true,unique = false,insertable = false,updatable = false)
public static void main(String[] args) { private String phone;
try {
SessionFactory sessionFactory public Customer() { }
=HibernateUtil.getSessionFactory(); public Customer(String cname, String email, String
Session session=sessionFactory.openSession(); phone) {
Transaction tx=session.beginTransaction(); super();
this.cname = cname;
Customer cust=session.load(Customer.class,1); this.email = email;
System.out.println(cust); this.phone = phone;
cust.setCname("srinivas"); }
cust.setPhone("12345"); //Setters and Getters
cust.setEmail("[email protected]"); @Override
session.update(cust); public String toString() {
tx.commit(); return cid + "\t" + cname + "\t" + email + "\t" + phone;
} catch (Exception e) { }
e.printStackTrace(); }
}
} }

Java Learning Center 107 Hibernate5 Study Guide


Using Embeddable and Embedded
A) Tables Required
1) mycustomers
cid cname email phone mycity mystreet mystate
1 Sri [email protected] 99999 Bangalore BTM Layout KA

B) Hibernate Entity Classes


1) Address.java
@Embeddable
public class Address {
private String street;
private String city;
private String state;


}

2) Customer.java
@Entity(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int sid;

@Embedded
@AttributeOverrides(value = {
@AttributeOverride(name = "street",
column = @Column(name = "mystreet")),
@AttributeOverride(name = "city",
column = @Column(name = "mycity")) ,
@AttributeOverride(name = "state",
column = @Column(name = "mystate"))
})
private Address address;

}
Lab18: Files required
1. Lab18A.java 2. Lab18B.java
3. Address.java 4. Customer.java
5. HibernateUtil.java

Java Learning Center 108 Hibernate5 Study Guide


1. Lab18A.java tx.commit();
package com.coursecube.hibernate; session.close();
}catch(Exception ex) {
import org.hibernate.*; ex.printStackTrace();
/* if(tx!=null)
* @Author : Srinivas Dande tx.rollback();
* @company : Java Learning Center }
* */ }
public class Lab18A { }
public static void main(String[] args) {
Transaction tx=null; 3. Address.java
try { package com.coursecube.hibernate;
SessionFactory sf=HibernateUtil.getSessionFactory();
Session session=sf.openSession(); import javax.persistence.*;
tx=session.beginTransaction(); /*
* @Author : Srinivas Dande
Address add=new Address("BTm layout", "Bangalore", * @company : Java Learning Center
"KA"); * */
Customer cust=new @Embeddable
Customer("ds","[email protected]","12345",add); public class Address {
session.save(cust); private String street;
private String city;
tx.commit(); private String state;
session.close();
}catch(Exception ex) { public Address() {
ex.printStackTrace(); System.out.println("Address-D.C");
if(tx!=null) }
tx.rollback(); public Address(String street, String city, String state) {
} super();
} } this.street = street;
2. Lab18B.java this.city = city;
package com.coursecube.hibernate; this.state = state;
};
import org.hibernate.*; //Setters and Getters
@Override
public class Lab18B { public String toString() {
public static void main(String[] args) { return street + "\t" + city + "\t" + state;
Transaction tx=null; }
try { }
SessionFactory sf=HibernateUtil.getSessionFactory();
Session session=sf.openSession();
tx=session.beginTransaction();

Customer cust=session.load(Customer.class,1);
System.out.println(cust.getCid());
System.out.println(cust.getCname());
System.out.println(cust.getAddress().getCity());

Java Learning Center 109 Hibernate5 Study Guide


4. Customer.java public Customer() {
package com.coursecube.hibernate; System.out.println("Customer-D.C");
}
import javax.persistence.*;
/* public Customer(String cname, String email, String
* @Author : Srinivas Dande phone, Address address) {
* @company : Java Learning Center super();
* */ this.cname = cname;
@Entity this.email = email;
@Table(name="mycustomers") this.phone = phone;
public class Customer { this.address = address;
}
@Id
@GeneratedValue(strategy = //Setters and Getters
GenerationType.IDENTITY)
@Column(name="cid") @Override
private int cid; public String toString() {
return cid + "\t" + cname + "\t" + email + "\t" +
@Column(name="cname") phone+"\t"+address.toString();
private String cname; }
}
@Column(name="myemail")
private String email;

@Column(name="myphone")
private String phone;

@Embedded
@AttributeOverrides({
@AttributeOverride(name= "street"
,column=@Column(name="mystreet")),
@AttributeOverride(name= "city"
,column=@Column(name="mycity")),
@AttributeOverride(name= "state"
,column=@Column(name="mystate"))
})
private Address address;

Java Learning Center 110 Hibernate5 Study Guide


@Basic Annotation
Lab19: Files required
1. Lab19A.java 2. Lab19B.java
3. Customer.java 4. HibernateUtil.java

1. Lab19A.java 2. Lab19B.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import org.hibernate.*; import org.hibernate.*;


/* /*
* @Author : Srinivas Dande * @Author : Srinivas Dande
* @company : CourseCube * @company : CourseCube
* @see : www.coursecube.com * @see : www.coursecube.com
* */ * */

public class Lab19A { public class Lab19B {


public static void main(String[] args) { public static void main(String[] args) {
Transaction tx=null; Transaction tx=null;
try { try {
SessionFactory sf=HibernateUtil.getSessionFactory(); SessionFactory sf=HibernateUtil.getSessionFactory();
Session session=sf.openSession(); Session session=sf.openSession();
tx=session.beginTransaction(); tx=session.beginTransaction();
/*
Customer cust1=new Customer cust=session.load(Customer.class,1);
Customer("sri","[email protected]","12345","Blore"); System.out.println(cust.getCid());
session.save(cust1); System.out.println(cust.getCname());
*/ System.out.println(cust.getEmail());
Customer cust2=new Customer("vas","[email protected]"); //System.out.println(cust.getPhone());
session.save(cust2); //System.out.println(cust.getCity());

tx.commit(); tx.commit();
session.close(); session.close();
}catch(Exception ex) { }catch(Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
if(tx!=null) if(tx!=null)
tx.rollback(); tx.rollback();
} }
} }
} }

Java Learning Center 111 Hibernate5 Study Guide


2. Customer.java public Customer(String cname, String email, String
package com.coursecube.hibernate; phone, String city) {
super();
import javax.persistence.*; this.cname = cname;
/* this.email = email;
* @Author : Srinivas Dande this.phone = phone;
* @company : CourseCube this.city = city;
* @see : www.coursecube.com }
* */ //Setters and Getters
@Entity @Override
@Table(name="customers") public String toString() {
public class Customer { return cid + "\t" + cname + "\t" + email + "\t" + phone+
"\t" + city;
@Id }
@GeneratedValue(strategy =
GenerationType.IDENTITY) }
@Basic
private int cid;

@Basic
private String cname;

@Basic(optional = true)
private String email;

@Basic(optional = false,fetch=FetchType.LAZY)
private String phone;

@Basic(optional = false,fetch=FetchType.LAZY)
private String city;

public Customer() { }
public Customer(String cname, String email) {
super();
this.cname = cname;
this.email = email;
}

Java Learning Center 112 Hibernate5 Study Guide


Example Using All Hibernate Mapping

Lab20: Files required


1. Lab20A.java 2. Lab20B.java
3. Lab20C.java 4. Lab20D.java
5. Lab20E.java 6. Lab20F.java
7. Lab20G.java 8. Author.java
9. Book.java 10. CreditCard.java
11. Customer.java 12. GoldCustomer.java
13. SilverCustomer.java 14. Order.java
15. ShippingAddress.java 16. OrderItem.java
17. HibernateUtil.java

1. Lab20A.java Author a1=new Author("Sri", "sri@jlc", 12345, skills,


package com.coursecube.hibernate; quals, exps);
session.save(a1);
import java.util.*;
import org.hibernate.*; Author a2=new Author("vas", "vas@jlc", 111, skills,
quals, exps);
public class Lab20A { session.save(a2);
public static void main(String[] args) {
Transaction tx=null; Author a3=new Author("sd", "sd@jlc", 999, skills, quals,
try { exps);
SessionFactory sf=HibernateUtil.getSessionFactory(); session.save(a3);
Session session=sf.openSession();
tx=session.beginTransaction(); Set<Author> authors=new HashSet<>();
authors.add(a1);
Book b1=new Book(" Angular-
8.",500,1,2019,"Available"); b1.setMyauthors(authors);
session.save(b1);
authors=new HashSet<>();
Book b2=new Book(" Spring- authors.add(a1); authors.add(a2);
5.4",500,1,2019,"Available");
session.save(b2); b2.setMyauthors(authors);

Book b3=new Book(" Spring Boot- authors=new HashSet<>();


2",500,1,2019,"Available"); authors.add(a1); authors.add(a2);
session.save(b3); authors.add(a3);

Set<String> skills=new HashSet<>(); b3.setMyauthors(authors);


skills.add("Hibernate5"); skills.add("Angular8");
skills.add("Spring5"); tx.commit(); session.close();
}catch(Exception ex) {
List<String> quals=new ArrayList<>(); ex.printStackTrace();
quals.add("B.Tech"); quals.add("M.Tech"); if(tx!=null)
quals.add("P.hd"); tx.rollback();
}
Map<String,Integer> exps=new HashMap<>(); }
exps.put("Google",5); exps.put("Oracle",5); }

Java Learning Center 113 Hibernate5 Study Guide


2. Lab20B.java //2. add CreditCard and associate
package com.coursecube.hibernate; CreditCard cc=new CreditCard(12345, "VISA", new
Date(), 999, "Active");
import java.util.*; session.save(cc);
import org.hibernate.*; //Deduct the Amount from New Card
cc.setCustomer(cust);
public class Lab20B {
public static void main(String[] args) { //3.add OrderItems and associate
Transaction tx=null; Book book1=session.load(Book.class, 1);
try { OrderItem item1=new OrderItem(2, 200, "OK",book1);
SessionFactory sf=HibernateUtil.getSessionFactory(); session.save(item1);
Session session=sf.openSession();
tx=session.beginTransaction(); Book book2=session.load(Book.class, 2);
OrderItem item2=new OrderItem(3, 200, "OK",book2);
SilverCustomer sc=new SilverCustomer("hello", session.save(item2);
"[email protected]", 111, new Date(), "[email protected]", 10, 10,
10); Book book3=session.load(Book.class, 3);
session.save(sc); OrderItem item3=new OrderItem(5, 200, "OK",book3);
session.save(item3);
GoldCustomer gc=new GoldCustomer("hai",
"[email protected]", 222, new Date(), 99999, 1000, 50, true); // 4. add Order and associate
session.save(gc); Order order=new Order(new Date(),10,700,new
Date(),"New");
tx.commit(); session.save(order);
session.close();
}catch(Exception ex) { order.setCustomer(cust);
ex.printStackTrace();
if(tx!=null) item1.setOrder(order);
tx.rollback(); item2.setOrder(order);
} item3.setOrder(order);
}
} // 5.add ShippingAddress and associate
3. Lab20C.java ShippingAddress add=new
ShippingAddress("BTM","Blore","KA",560076);
package com.coursecube.hibernate;
session.save(add);
order.setMyaddress(add);
import java.util.*;
tx.commit();
import org.hibernate.*;
session.close();

public class Lab20C {


}catch(Exception ex) {
public static void main(String[] args) {
ex.printStackTrace();
Transaction tx=null;
if(tx!=null)
try {
tx.rollback();
SessionFactory sf=HibernateUtil.getSessionFactory(); }
Session session=sf.openSession();
tx=session.beginTransaction();
}
}
//1. load Customer
SilverCustomer cust=session.load(SilverCustomer.class,
1);

Java Learning Center 114 Hibernate5 Study Guide


4. Lab20D.java 5. Lab20E.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import java.util.*; import java.util.*;


import org.hibernate.*;
/* import org.hibernate.*;
* @Author : Srinivas Dande public class Lab20E {
* @company : CourseCube public static void main(String[] args) {
* @see : www.coursecube.com Transaction tx=null;
* */ try {
public class Lab20D { SessionFactory sf=HibernateUtil.getSessionFactory();
public static void main(String[] args) { Session session=sf.openSession();
Transaction tx=null; tx=session.beginTransaction();
try {
SessionFactory sf=HibernateUtil.getSessionFactory(); //1. load Customer
Session session=sf.openSession(); GoldCustomer cust=session.load(GoldCustomer.class, 2);
tx=session.beginTransaction();
Set<CreditCard> ccs=cust.getMycards();
//1. load Customer //Deduct the Amount from Existing Card
GoldCustomer cust=session.load(GoldCustomer.class, //Restul Web Services (Micro Service Architecture)
2);
Book book=session.load(Book.class, 3);
//2. add CreditCard and associate OrderItem item=new OrderItem(1, 100, "OK OK",book);
CreditCard cc=new CreditCard(55555, "MASTER", new session.save(item);
Date(), 555, "Active");
session.save(cc); // 4. add Order and associate
Order order=new Order(new Date(),1,100,new
cc.setCustomer(cust); Date(),"New");
session.save(order);
tx.commit();
session.close(); order.setCustomer(cust);
}catch(Exception ex) {
ex.printStackTrace(); item.setOrder(order);
if(tx!=null)
tx.rollback(); // 5.add ShippingAddress and associate
} ShippingAddress add=new ShippingAddress("BTM
} 2","Blore","KA",560076);
} session.save(add);
order.setMyaddress(add);

tx.commit();
session.close();

}catch(Exception ex) {
ex.printStackTrace();
if(tx!=null)
tx.rollback();
}
}
}

Java Learning Center 115 Hibernate5 Study Guide


6. Lab20F.java 7. Lab20G.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import java.util.*; import java.util.*;


import org.hibernate.*; import org.hibernate.*;
/*
public class Lab20F { * @Author : Srinivas Dande
public static void main(String[] args) { * @company : CourseCube
Transaction tx=null; * @see : www.coursecube.com
try { * */
SessionFactory sf=HibernateUtil.getSessionFactory(); public class Lab20G {
Session session=sf.openSession(); public static void main(String[] args) {
tx=session.beginTransaction(); Transaction tx=null;
try {
// GoldCustomer cust=session.load(GoldCustomer.class, SessionFactory sf=HibernateUtil.getSessionFactory();
2); Session session=sf.openSession();
SilverCustomer cust=session.load(SilverCustomer.class, tx=session.beginTransaction();
1);
System.out.println(cust); Author author=session.load(Author.class,1);
System.out.println(author);
Set<CreditCard> cards=cust.getMycards();
for(CreditCard cc:cards) Set<Book> books=author.getMybooks();
System.out.println(cc);
for(Book book:books)
Set<Order> orders= cust.getMyorders(); System.out.println(book);
for(Order order:orders) {
System.out.println(order); tx.commit();
ShippingAddress add=order.getMyaddress(); session.close();
System.out.println(add);
Set<OrderItem> items=order.getMyOrderItems(); }catch(Exception ex) {
for(OrderItem oitem:items) { ex.printStackTrace();
System.out.println(oitem); if(tx!=null)
System.out.println(oitem.getMybook()); tx.rollback();
} }
} }
}
tx.commit();
session.close();
}catch(Exception ex) {
ex.printStackTrace();
if(tx!=null)
tx.rollback();
}
}
}

Java Learning Center 116 Hibernate5 Study Guide


8. Author.java //Setters and Getters
package com.coursecube.hibernate; @Override
public String toString() {
import java.util.*; return authorId + "\t" + authorName + "\t" + email +
import javax.persistence.*; "\t" + phone ;
@Entity } }
@Table(name="authors") 10. CreditCard.java
public class Author { package com.coursecube.hibernate;
@Id
@GeneratedValue(strategy = import java.util.Date;
GenerationType.IDENTITY) import javax.persistence.*;
@Column(name="authorId")
private int authorId; @Entity
@Column(name="authorName") @Table(name="creditcards")
private String authorName; public class CreditCard {
@Column(name="email") @Id
private String email; @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="phone") @Column(name="id")
private long phone; private int id;

@ElementCollection @Column(name="cardNumber")
@CollectionTable(name="myskills",joinColumns = private long cardNumber;
@JoinColumn(name="authorId")) @Column(name="cardType")
@Column(name="skillName") private String cardType;
private Set<String> skills; @Column(name="expDate")
private Date expDate;
@ElementCollection
@CollectionTable(name="myqualis",joinColumns = @Column(name="cvv")
@JoinColumn(name="authorId")) private int cvv;
@OrderColumn(name="qorder")
@Column(name="qualis") @Column(name="status")
private List<String> qualifications; private String status;

@ElementCollection @ManyToOne
@CollectionTable(name="myexps",joinColumns = @JoinColumn(name="mycid",referencedColumnName =
@JoinColumn(name="authorId")) "cid")
@MapKeyColumn(name="companyName") private Customer customer;
@Column(name="yoe") public CreditCard() {}
private Map<String,Integer> exps; public CreditCard(long cardNumber, String cardType,
Date expDate, int cvv, String status) {
@ManyToMany(mappedBy = "myauthors") this.cardNumber = cardNumber;
private Set<Book> mybooks; this.cardType = cardType; this.expDate = expDate;
public Author() {} this.cvv = cvv; this.status = status;
public Author(String authorName, String email, long }
phone, Set<String> skills, List<String> qualifications, //Setters and Getters
Map<String, Integer> exps) { @Override
this.authorName = authorName; public String toString() {
this.email = email; this.phone = phone; return cardNumber + "\t" + cardType + "\t" + expDate +
this.skills = skills; this.qualifications = qualifications; "\t" + cvv + "\t" + status ;
this.exps = exps; }
} }

Java Learning Center 117 Hibernate5 Study Guide


9.Book.java @Override
package com.coursecube.hibernate; public String toString() {
return bookId + "\t" + bookName + "\t" + cost + "\t" +
import java.util.*; edition + "\t" + yop+"\t"+status ;
import javax.persistence.*; } }
@Entity 11. Customer.java
@Table(name="books") package com.coursecube.hibernate;
public class Book {
@Id import java.util.Date;
@GeneratedValue(strategy = import java.util.Set;
GenerationType.IDENTITY) import javax.persistence.*;
@Column(name="bookId") @Entity
private int bookId; @Table(name="mycustomers")
@Inheritance(strategy = InheritanceType.JOINED)
@Column(name="bookName") public abstract class Customer {
private String bookName; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="cost") @Column(name="cid")
private double cost; private int cid;

@Column(name="edition") @Column(name="cname")
private int edition; private String cname;
@Column(name="yop")
private int yop; @Column(name="email")
@Column(name="status") private String email;
private String status;
@Column(name="phone")
@ManyToMany private long phone;
@JoinTable(
name="authors_books", @Column(name="dob")
joinColumns private Date dob;
=@JoinColumn(name="myBookId",referencedColumnN
ame = "bookId"), @OneToMany(mappedBy = "customer")
inverseJoinColumns private Set<CreditCard> mycards;
=@JoinColumn(name="myAuthorId",referencedColumn
Name = "authorId") @OneToMany(mappedBy = "customer")
) private Set<Order> myorders;
private Set<Author> myauthors;
public Customer() { }
@OneToMany(mappedBy = "mybook") public Customer(String cname, String email, long phone,
private Set<OrderItem> myOrderItems; Date dob) {
public Book() {} this.cname = cname; this.email = email;
public Book(String bookName, double cost, int edition, this.phone = phone; this.dob = dob;
int yop, String status) { }
this.bookName = bookName; //Setters and Getters
this.cost = cost; this.edition = edition; @Override
this.yop = yop; this.status = status; public String toString() {
} return cid + "\t" + cname + "\t" + email + "\t" + phone +
//Setters and Getters "\t" + dob ;
} }

Java Learning Center 118 Hibernate5 Study Guide


12. GoldCustomer.java 13. SilverCustomer.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import java.util.Date; import java.util.Date;


import javax.persistence.*; import javax.persistence.*;
/* /*
* @Author : Srinivas Dande * @Author : Srinivas Dande
* @company : CourseCube * @company : CourseCube
* @see : www.coursecube.com * @see : www.coursecube.com
* */ * */
@Entity @Entity
@Table(name="gcustomers") @Table(name="scustomers")
@PrimaryKeyJoinColumn(name="mycid") @PrimaryKeyJoinColumn(name="mycid")
public class GoldCustomer extends Customer{ public class SilverCustomer extends Customer {

@Column(name="supportPhone") @Column(name="supportEmail")
private long supportPhone; private String supportEmail;

@Column(name="rpoints") @Column(name="discounts")
private int rpoints; private double discounts;

@Column(name="cashback") @Column(name="shippingFee")
private double cashback; private double shippingFee;

@Column(name="earlyAccess") @Column(name="handlingCharges")
private boolean earlyAccess; private double handlingCharges;

public GoldCustomer() {} public SilverCustomer() {}


public GoldCustomer(String cname, String email, long public SilverCustomer(String cname, String email, long
phone, Date dob, long supportPhone, int rpoints, phone, Date dob, String supportEmail, double discounts,
double cashback, double shippingFee, double handlingCharges) {
boolean earlyAccess) { super(cname, email, phone, dob);
super(cname, email, phone, dob); this.supportEmail = supportEmail;
this.supportPhone = supportPhone; this.discounts = discounts;
this.rpoints = rpoints; this.shippingFee = shippingFee;
this.cashback = cashback; this.handlingCharges = handlingCharges;
this.earlyAccess = earlyAccess; }
} //Setters and Getters
//Setters and Getters @Override
@Override public String toString() {
public String toString() { return super.toString()+"\t"+supportEmail + "\t" +
return super.toString()+"\t"+supportPhone + "\t" + discounts + "\t" + shippingFee + "\t" + handlingCharges;
rpoints + "\t" + cashback + "\t" + earlyAccess; }
} }
}

Java Learning Center 119 Hibernate5 Study Guide


14. Order.java //Setters and Getters
package com.coursecube.hibernate; @Override
public String toString() {
import java.util.*; return orderId + "\t" + orderDate + "\t" + totalQty + "\t"
import javax.persistence.*; + totalCost + "\t" + deliveryDate+"\t"+status ;
@Entity }
@Table(name="orders") }
public class Order { 15. ShippingAddress.java
@Id package com.coursecube.hibernate;
@GeneratedValue(strategy =
GenerationType.IDENTITY) import javax.persistence.*;
@Column(name="orderId") @Entity
private int orderId; @Table(name="shippingaddress")
public class ShippingAddress {
@Column(name="orderDate") @Id
private Date orderDate; @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="addId")
@Column(name="totalQty") private int addId;
private int totalQty;
@Column(name="street")
@Column(name="totalCost") private String street;
private double totalCost;
@Column(name="city")
@Column(name="deliveryDate") private String city;
private Date deliveryDate;
@Column(name="state")
@Column(name="status") private String state;
private String status;
@Column(name="pin")
@ManyToOne private int pin;
@JoinColumn(name="mycid")
private Customer customer; @OneToOne(mappedBy = "myaddress")
private Order order;
@OneToOne
@JoinColumn(name="myaddId") public ShippingAddress() {}
private ShippingAddress myaddress; public ShippingAddress(String street, String city, String
state, int pin) {
@OneToMany(mappedBy = "order") super();
private Set<OrderItem> myOrderItems; this.street = street;
this.city = city;
public Order() {} this.state = state;
public Order(Date orderDate, int totalQty, double this.pin = pin;
totalCost, Date deliveryDate, String status) { }
this.orderDate = orderDate; //Setters and Getters
this.totalQty = totalQty; @Override
this.totalCost = totalCost; public String toString() {
this.deliveryDate = deliveryDate; return addId + "\t" + street + "\t" + city + "\t" + state +
this.status = status; "\t" + pin;
} }
}

Java Learning Center 120 Hibernate5 Study Guide


16. OrderItem.java 17. HibernateUtil.java
package com.coursecube.hibernate; package com.coursecube.hibernate;

import javax.persistence.*; //Imports Here


@Entity public class HibernateUtil {
@Table(name="orderItems") static SessionFactory sessionFactory;
public class OrderItem { static {
@Id Configuration cfg=new Configuration();
@GeneratedValue(strategy =
GenerationType.IDENTITY) Properties props=new Properties();
@Column(name="orderItemId") props.put(Environment.DRIVER,
private int orderItemId; "com.mysql.jdbc.Driver");
props.put(Environment.URL,
@Column(name="qty") "jdbc:mysql://localhost:3306/bstoredb");
private int qty; props.put(Environment.USER, "root");
props.put(Environment.PASS, "srinivas");
@Column(name="cost")
private double cost; props.put(Environment.SHOW_SQL, "true");
props.put(Environment.DIALECT,
@Column(name="status") "org.hibernate.dialect.MySQLDialect");
private String status;
props.put(Environment.CURRENT_SESSION_CONTEXT_C
@ManyToOne LASS, "thread");
@JoinColumn(name="myOrderId",referencedColumnN props.put(Environment.HBM2DDL_AUTO, "update");
ame = "orderId")
private Order order; cfg.setProperties(props);

@ManyToOne cfg.addAnnotatedClass(Customer.class);
@JoinColumn(name="myBookId",referencedColumnNa cfg.addAnnotatedClass(SilverCustomer.class);
me = "bookId") cfg.addAnnotatedClass(GoldCustomer.class);
private Book mybook; cfg.addAnnotatedClass(ShippingAddress.class);
cfg.addAnnotatedClass(CreditCard.class);
public OrderItem() {} cfg.addAnnotatedClass(Order.class);
public OrderItem(int qty, double cost, String status) { cfg.addAnnotatedClass(OrderItem.class);
this.qty = qty; this.cost = cost; cfg.addAnnotatedClass(Book.class);
this.status = status; cfg.addAnnotatedClass(Author.class);
}
public OrderItem(int qty, double cost, String status, StandardServiceRegistryBuilder ssrbuilder=new
Book mybook) { StandardServiceRegistryBuilder();
this.qty = qty; ServiceRegistry
this.cost = cost; serviceReg=ssrbuilder.applySettings(cfg.getProperties()).
this.status = status; build();
this.mybook = mybook; sessionFactory=cfg.buildSessionFactory(serviceReg);
} }
//Setters and Getters public static SessionFactory getSessionFactory() {
//toString() return sessionFactory;
} }
}

Java Learning Center 121 Hibernate5 Study Guide

You might also like