G l a r i m y TeachCode Series Hibernate Illustrated Krishna Mohan Koyya
Basic Mapping Entities with XML Person.java import java.util.date; public class Person { private int id; private String name; private int phone; private Date dob; private boolean indian; private double height; private String profile; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; public Date getdob() { return dob; public void setdob(date dob) { this.dob = dob;
public boolean isindian() { return indian; public void setindian(boolean indian) { this.indian = indian; public double getheight() { return height; public void setheight(double height) { this.height = height; public String getprofile() { return profile; public void setprofile(string profile) { this.profile = profile; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", dob=" + dob + ", indian=" + indian + ", height=" + height + ", phone=" + phone + ", profile=" + profile + "]"; HBMFirstApp.java import java.util.date; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.configuration; public class HBMFirstApp { public static void main(string[] args) { Person swapnika = new Person(); swapnika.setname("swapnika");
swapnika.setdob(new Date(7, 26, 2008)); swapnika.setindian(true); swapnika.setphone(973142316); swapnika.setheight(5.6); swapnika.setprofile("senior Software Engineering working at Bangalore"); Person krishna = new Person(); krishna.setname("krishna"); krishna.setdob(new Date(7, 22, 1972)); krishna.setindian(true); krishna.setphone(973142316); krishna.setheight(5.8); krishna.setprofile("principle Consultant at Glarimy Technology Services"); SessionFactory factory = new Configuration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = session.begintransaction(); try { session.save(swapnika); session.save(krishna); Person friend = (Person) session.get(person.class.getname(), swapnika.getid()); tx.commit(); System.out.println(friend); catch (Exception e) { e.printstacktrace(); tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property>
name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping resource="first.hbm.xml" /> </session-factory> </hibernate-configuration> first.hbm.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.glarimy.hbm"> <class name="person" table="people"> <id name="id" type="int"> <generator class="native" /> </id> name="name" type="string" unique="true" /> name="dob" type="date" column="date_of_birth" /> name="height" type="double" precision="2" scale="2" /> name="indian" type="boolean" /> name="phone" type="int" length="12" not-null="false" /> </class> </hibernate-mapping>
Basic Mapping Entities with JPA Annotations Person.java import java.util.date; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.temporal; import javax.persistence.temporaltype; import javax.persistence.transient; @Entity(name = "People") public class Person { @Id @GeneratedValue private int id; @Column(unique = true) private String name; @Column(nullable = true) private int phone; @Column(name = "Date_of_Birth") @Temporal(TemporalType.DATE) private Date dob; private boolean indian; @Column(precision = 2, scale = 2) private double height; @Transient private String profile; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() {
return name; public void setname(string name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; public Date getdob() { return dob; public void setdob(date dob) { this.dob = dob; public boolean isindian() { return indian; public void setindian(boolean indian) { this.indian = indian; public double getheight() { return height; public void setheight(double height) { this.height = height; public String getprofile() { return profile; public void setprofile(string profile) { this.profile = profile; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", dob=" + dob + ", indian=" + indian + ", height=" + height + ", phone="
+ phone + ", profile=" + profile + "]"; HBMSecondApp.java import java.util.date; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMSecondApp { @SuppressWarnings("deprecation") public static void main(string[] args) { Person swapnika = new Person(); swapnika.setname("swapnika"); swapnika.setdob(new Date(7, 26, 2008)); swapnika.setindian(true); swapnika.setphone(973142316); swapnika.setheight(5.6); swapnika.setprofile("senior Software Engineering working at Bangalore"); Person krishna = new Person(); krishna.setname("krishna"); krishna.setdob(new Date(7, 22, 1972)); krishna.setindian(true); krishna.setphone(973142316); krishna.setheight(5.8); krishna.setprofile("principle Consultant at Glarimy Technology Services"); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = session.begintransaction(); try { session.save(swapnika); session.save(krishna); Person friend = (Person) session.get(person.class.getname(), swapnika.getid()); tx.commit(); System.out.println(friend);
catch (Exception e) { e.printstacktrace(); tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping class="com.glarimy.hbm.person" /> </session-factory> </hibernate-configuration>
CRUD operations through Hibernate Person.java import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity(name = "People") public class Person { @Id @GeneratedValue private int id; @Column(unique = true) private String name; @Column(nullable = true) private int phone; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; @Override public String tostring() {
return "Person [id=" + id + ", name=" + name + ", phone=" + phone + "]"; HBMThirdApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMThirdApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Person krishna = new Person(); krishna.setname("krishna"); krishna.setphone(973142316); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); krishna.setphone(99455000); tx.commit(); System.out.println(krishna); System.out.println("Check the table, update the phone number and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction();
session.refresh(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); session.evict(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); session.delete(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property>
name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping class="com.glarimy.hbm.person" /> </session-factory> </hibernate-configuration>
Mapping Compound Keys Name.java import java.io.serializable; public class Name implements Serializable { private static final long serialversionuid = 8245397011060370410L; private String firstname; private String lastname; public Name() { public Name(String firstname, String lastname) { super(); this.firstname = firstname; this.lastname = lastname; public String getfirstname() { return firstname; public void setfirstname(string firstname) { this.firstname = firstname; public String getlastname() { return lastname; public void setlastname(string lastname) { this.lastname = lastname; @Override public int hashcode() { final int prime = 31; int result = 1; result = prime * result + ((firstname == null)? 0 : firstname.hashcode()); result = prime * result + ((lastname == null)? 0 : lastname.hashcode()); return result;
@Override public boolean equals(object obj) { if (this == obj) return true; if (obj == null) return false; if (getclass()!= obj.getclass()) return false; Name other = (Name) obj; if (firstname == null) { if (other.firstname!= null) return false; else if (!firstname.equals(other.firstname)) return false; if (lastname == null) { if (other.lastname!= null) return false; else if (!lastname.equals(other.lastname)) return false; return true; @Override public String tostring() { return "Name [firstname=" + firstname + ", lastname=" + lastname + "]"; Person.java import javax.persistence.column; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.idclass; @Entity(name = "People") @IdClass(value = com.glarimy.hbm.name.class) public class Person { @Id private String firstname; @Id private String lastname; @Column(nullable = true) private int phone;
public String getfirstname() { return firstname; public void setfirstname(string firstname) { this.firstname = firstname; public String getlastname() { return lastname; public void setlastname(string lastname) { this.lastname = lastname; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; @Override public String tostring() { return "Person [firstname=" + firstname + ", lastname=" + lastname + ", phone=" + phone + "]"; HBMFourthApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMFourthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Person krishna = new Person(); krishna.setfirstname("krishna Mohan"); krishna.setlastname("koyya");
krishna.setphone(973142316); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); Person mohan = (Person) session.get(person.class.getname(), new Name("Krishna Mohan", "Koyya")); System.out.println(mohan); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping class="com.glarimy.hbm.person" /> </session-factory> </hibernate-configuration>
Mapping Compound Keys with Embedded ID Name.java import java.io.serializable; import javax.persistence.embeddable; @Embeddable public class Name implements Serializable { private static final long serialversionuid = 8245397011060370410L; private String firstname; private String lastname; public Name() { public Name(String firstname, String lastname) { super(); this.firstname = firstname; this.lastname = lastname; public String getfirstname() { return firstname; public void setfirstname(string firstname) { this.firstname = firstname; public String getlastname() { return lastname; public void setlastname(string lastname) { this.lastname = lastname; @Override public int hashcode() { final int prime = 31; int result = 1; result = prime * result + ((firstname == null)? 0 : firstname.hashcode()); result = prime * result
+ ((lastname == null)? 0 : lastname.hashcode()); return result; @Override public boolean equals(object obj) { if (this == obj) return true; if (obj == null) return false; if (getclass()!= obj.getclass()) return false; Name other = (Name) obj; if (firstname == null) { if (other.firstname!= null) return false; else if (!firstname.equals(other.firstname)) return false; if (lastname == null) { if (other.lastname!= null) return false; else if (!lastname.equals(other.lastname)) return false; return true; @Override public String tostring() { return "Name [firstname=" + firstname + ", lastname=" + lastname + "]"; Person.java import javax.persistence.column; import javax.persistence.embeddedid; import javax.persistence.entity; @Entity(name = "People") public class Person { @EmbeddedId private Name name; @Column(nullable = true) private int phone; public Name getname() {
return name; public void setname(name name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; @Override public String tostring() { return "Person [name=" + name + ", phone=" + phone + "]"; HBMFifthApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMFifthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Person krishna = new Person(); krishna.setname(new Name("Krishna Mohan", "Koyya")); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out
.println("check the table and enter any character to continue..."); scanner.nextline(); Person mohan = (Person) session.get(person.class.getname(), new Name("Krishna Mohan", "Koyya")); System.out.println(mohan); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping class="com.glarimy.hbm.person" /> </session-factory> </hibernate-configuration>
Mapping Components Address.java import javax.persistence.embeddable; @Embeddable public class Address { private String city; private int pin; public String getcity() { return city; public void setcity(string city) { this.city = city; public int getpin() { return pin; public void setpin(int pin) { this.pin = pin; @Override public String tostring() { return "Address [city=" + city + ", pin=" + pin + "]"; Person.java import javax.persistence.column; import javax.persistence.embedded; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity(name = "People") public class Person { @Id
@GeneratedValue private int id; @Column(unique = true) private String name; @Column(nullable = true) private int phone; @Embedded private Address address; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone; public Address getaddress() { return address; public void setaddress(address address) { this.address = address; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", phone=" + phone + ", address=" + address + "]"; HBMSixthApp.java
import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMSixthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Address address = new Address(); address.setcity("bangalore"); address.setpin(560016); Person krishna = new Person(); krishna.setname("krishna"); krishna.setaddress(address); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); Person mohan = (Person) session.get(person.class.getname(), krishna.getid()); System.out.println(mohan); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close();
hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqldialect</property> <mapping class="com.glarimy.hbm.person" /> </session-factory> </hibernate-configuration>
Mapping One To One Association Address.java import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity public class Address { @Id @GeneratedValue private int id; private String city; private int pin; public int getid() { return id; public void setid(int id) { this.id = id; public String getcity() { return city; public void setcity(string city) { this.city = city; public int getpin() { return pin; public void setpin(int pin) { this.pin = pin; @Override public String tostring() { return "Address [city=" + city + ", id=" + id + ", pin=" + pin + "]";
Person.java import javax.persistence.cascadetype; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.onetoone; @Entity(name = "People") public class Person { @Id @GeneratedValue private int id; @Column(unique = true) private String name; @Column(nullable = true) private int phone; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "address", referencedcolumnname = "id") private Address address; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public int getphone() { return phone; public void setphone(int phone) { this.phone = phone;
public Address getaddress() { return address; public void setaddress(address address) { this.address = address; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", phone=" + phone + ", address=" + address + "]"; HBMSeventhApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMSeventhApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Address address = new Address(); address.setcity("bangalore"); address.setpin(560016); Person krishna = new Person(); krishna.setname("krishna"); krishna.setaddress(address); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit();
System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); address.setpin(560034); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.address" /> </session-factory> </hibernate-configuration>
Mapping One To Many Association Address.java import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity public class Address { @Id @GeneratedValue private int id; private String city; private int pin; public int getid() { return id; public void setid(int id) { this.id = id; public String getcity() { return city; public void setcity(string city) { this.city = city; public int getpin() { return pin; public void setpin(int pin) { this.pin = pin; @Override public String tostring() { return "Address [city=" + city + ", id=" + id + ", pin=" + pin + "]";
Person.java import java.io.serializable; import java.util.list; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.onetomany; @Entity(name = "People") public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id @GeneratedValue private int id; private String name; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "person", referencedcolumnname = "name") private List<Address> addresses; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public List<Address> getaddresses() { return addresses; public void setaddresses(list<address> addresses) { this.addresses = addresses;
@Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", addresses=" + addresses + "]"; HBMEighthApp.java import java.util.arraylist; import java.util.list; import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMEighthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Address current = new Address(); current.setcity("bangalore"); current.setpin(560016); Address permanent = new Address(); permanent.setcity("tadepalligudem"); permanent.setpin(534101); List<Address> addresses = new ArrayList<Address>(); addresses.add(current); addresses.add(permanent); Person person = null; Person krishna = new Person(); krishna.setname("krishna"); krishna.setaddresses(addresses); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna);
tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); current.setpin(560034); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); krishna.getaddresses().remove(0); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); krishna.getaddresses().remove(0); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); session.evict(krishna); person = (Person) session.get(person.class.getname(), krishna.getid()); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); System.out.println(person); System.out.println("Check the table and enter any character to continue..."); scanner.nextline();
hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.address" /> </session-factory> </hibernate-configuration>
Mapping Many To Many Association Address.java import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity public class Address { @Id @GeneratedValue private int id; private String city; private int pin; public int getid() { return id; public void setid(int id) { this.id = id; public String getcity() { return city; public void setcity(string city) { this.city = city; public int getpin() { return pin; public void setpin(int pin) { this.pin = pin; @Override public String tostring() { return "Address [city=" + city + ", id=" + id + ", pin=" + pin + "]";
Person.java import java.io.serializable; import java.util.arraylist; import java.util.list; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.jointable; import javax.persistence.manytomany; @Entity(name = "People") public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id @GeneratedValue private int id; private String name; @ManyToMany(cascade=CascadeType.ALL, fetch=fetchtype.lazy) @JoinTable(name="people_addresses") private List<Address> addresses = new ArrayList<Address>(); public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public List<Address> getaddresses() { return addresses; public void setaddresses(list<address> addresses) {
this.addresses = addresses; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", addresses=" + addresses + "]"; HBMNinthApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMNinthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Address current = new Address(); current.setcity("bangalore"); current.setpin(560016); Address permanent = new Address(); permanent.setcity("tadepalligudem"); permanent.setpin(534101); Address office = new Address(); office.setcity("e-city"); office.setpin(560100); Person krishna = new Person(); krishna.setname("krishna"); krishna.getaddresses().add(current); krishna.getaddresses().add(permanent); Person swapnika = new Person(); swapnika.setname("swapnika"); swapnika.getaddresses().add(current); swapnika.getaddresses().add(permanent); swapnika.getaddresses().add(office); Person person = null;
SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); session.save(swapnika); tx.commit(); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); current.setpin(560034); tx.commit(); System.out.println(krishna); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); krishna.getaddresses().remove(0); tx.commit(); System.out.println(krishna); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); session.evict(krishna); person = (Person) session.get(person.class.getname(), krishna.getid()); catch (Exception e) { e.printstacktrace();
if (tx!= null) tx.rollback(); finally { tx = null; session.close(); System.out.println(person); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.address" /> </session-factory> </hibernate-configuration>
Mapping Bidirectional Associations Address.java import java.util.arraylist; import java.util.list; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.manytomany; @Entity public class Address { @Id @GeneratedValue private int id; private String city; private int pin; @ManyToMany(cascade = CascadeType.ALL, mappedby = "addresses") private List<Person> persons = new ArrayList<Person>(); public int getid() { return id; public void setid(int id) { this.id = id; public String getcity() { return city; public void setcity(string city) { this.city = city; public int getpin() { return pin; public void setpin(int pin) { this.pin = pin;
public List<Person> getpersons() { return persons; public void setpersons(list<person> persons) { this.persons = persons; @Override public String tostring() { return "Address [id=" + id + ", city=" + city + ", pin=" + pin + "]"; Person.java import java.io.serializable; import java.util.arraylist; import java.util.list; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.jointable; import javax.persistence.manytomany; @Entity(name = "People") public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id @GeneratedValue private int id; private String name; @ManyToMany(cascade=CascadeType.ALL, fetch=fetchtype.lazy) @JoinTable( name="people_addresses", joincolumns=@joincolumn(name="person", referencedcolumnname="id"), inversejoincolumns=@joincolumn(name="address", referencedcolumnname="id")) private List<Address> addresses = new ArrayList<Address>(); public int getid() {
return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public List<Address> getaddresses() { return addresses; public void setaddresses(list<address> addresses) { this.addresses = addresses; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + ", addresses=" + addresses + "]"; HBMTenthApp.java import java.util.scanner; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMTenthApp { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); Address current = new Address(); current.setcity("bangalore"); current.setpin(560016);
Address permanent = new Address(); permanent.setcity("tadepalligudem"); permanent.setpin(534101); Address office = new Address(); office.setcity("e-city"); office.setpin(560100); Person krishna = new Person(); krishna.setname("krishna"); current.getpersons().add(krishna); permanent.getpersons().add(krishna); krishna.getaddresses().add(current); krishna.getaddresses().add(permanent); Person swapnika = new Person(); swapnika.setname("swapnika"); current.getpersons().add(swapnika); permanent.getpersons().add(swapnika); office.getpersons().add(swapnika); swapnika.getaddresses().add(current); swapnika.getaddresses().add(permanent); swapnika.getaddresses().add(office); Person person = null; SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); tx.commit(); System.out.println(krishna); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); session.save(swapnika); tx.commit(); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction();
current.setpin(560034); tx.commit(); System.out.println(krishna); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); tx = session.begintransaction(); krishna.getaddresses().remove(0); tx.commit(); System.out.println(krishna); System.out.println(swapnika); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); session.evict(krishna); person = (Person) session.get(person.class.getname(), krishna.getid()); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); System.out.println(person); System.out.println("Check the table and enter any character to continue..."); scanner.nextline(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property>
name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.address" /> </session-factory> </hibernate-configuration>
Mapping Inheritance Using Single Table Strategy Person.java import java.io.serializable; import javax.persistence.discriminatorcolumn; import javax.persistence.discriminatortype; import javax.persistence.discriminatorvalue; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; import javax.persistence.inheritance; import javax.persistence.inheritancetype; @Entity(name = "People") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="type", discriminatortype=discriminatortype.integer) @DiscriminatorValue(value="1") public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id @GeneratedValue protected int id; protected String name; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + "]";
Employee.java import javax.persistence.discriminatorvalue; import javax.persistence.entity; @Entity @DiscriminatorValue(value = "2") public class Employee extends Person { private static final long serialversionuid = 8028369986900677881L; private double salary; public void setsalary(double salary) { this.salary = salary; @Override public String tostring() { return "Employee [id=" + id + ", name=" + name + ", salary=" + salary + "]"; HBMEleventhApp.java import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMEleventhApp { @SuppressWarnings("unchecked") public static void main(string[] args) { Person krishna = new Person(); krishna.setname("krishna"); Employee swapnika = new Employee(); swapnika.setname("swapnika"); swapnika.setsalary(30000);
SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna); session.save(swapnika); Query query = session.createquery("from com.glarimy.hbm.person"); List<Person> persons = query.list(); for (Person p : persons) System.out.println(p); tx.commit(); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.employee" /> </session-factory> </hibernate-configuration>
Mapping Inheritance Using Table Per Class Strategy Person.java import java.io.serializable; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.inheritance; import javax.persistence.inheritancetype; @Entity(name = "People") @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id protected int id; protected String name; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + "]"; Employee.java import javax.persistence.entity;
@Entity public class Employee extends Person { private static final long serialversionuid = 8028369986900677881L; private double salary; public void setsalary(double salary) { this.salary = salary; @Override public String tostring() { return "Employee [id=" + id + ", name=" + name + ", salary=" + salary + "]"; HBMTwelvthApp.java import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMTwelvthApp { @SuppressWarnings("unchecked") public static void main(string[] args) { Person krishna = new Person(); krishna.setid(1); krishna.setname("krishna"); Employee swapnika = new Employee(); swapnika.setid(2); swapnika.setname("swapnika"); swapnika.setsalary(30000); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction();
session.save(krishna); session.save(swapnika); Query query = session.createquery("from com.glarimy.hbm.person"); List<Person> persons = query.list(); for (Person p : persons) System.out.println(p); tx.commit(); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.employee" /> </session-factory> </hibernate-configuration>
Mapping Inheritance Using Join Table Strategy Person.java import java.io.serializable; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.inheritance; import javax.persistence.inheritancetype; @Entity(name = "People") @Inheritance(strategy = InheritanceType.JOINED) public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; @Id protected int id; protected String name; public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; @Override public String tostring() { return "Person [id=" + id + ", name=" + name + "]"; Employee.java import javax.persistence.entity;
@Entity public class Employee extends Person { private static final long serialversionuid = 8028369986900677881L; private double salary; public void setsalary(double salary) { this.salary = salary; @Override public String tostring() { return "Employee [id=" + id + ", name=" + name + ", salary=" + salary + "]"; HBMThirteenthApp.java import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMThirteenthApp { @SuppressWarnings("unchecked") public static void main(string[] args) { Person krishna = new Person(); krishna.setid(1); krishna.setname("krishna"); Employee swapnika = new Employee(); swapnika.setid(2); swapnika.setname("swapnika"); swapnika.setsalary(30000); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(krishna);
session.save(swapnika); Query query = session.createquery("from com.glarimy.hbm.person"); List<Person> persons = query.list(); for (Person p : persons) System.out.println(p); tx.commit(); catch (Exception e) { e.printstacktrace(); if (tx!= null) tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.person" /> <mapping class="com.glarimy.hbm.employee" /> </session-factory> </hibernate-configuration>
Mapping a Non-Entity Super Class Person.java import java.io.serializable; import javax.persistence.mappedsuperclass; @MappedSuperclass public class Person implements Serializable { private static final long serialversionuid = -9061337820645842479L; protected String name; public String getname() { return name; public void setname(string name) { this.name = name; @Override public String tostring() { return "Person [name=" + name + "]"; Employee.java import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity public class Employee extends Person { private static final long serialversionuid = -6198148032756999209L; @Id @GeneratedValue private int id; private double salary; public void setsalary(double salary) { this.salary = salary;
@Override public String tostring() { return "Employee [id=" + id + ", name=" + name + ", salary=" + salary + "]"; HBMFourteenthApp.java import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.annotationconfiguration; public class HBMFourteenthApp { @SuppressWarnings("unchecked") public static void main(string[] args) { Person krishna = new Person(); krishna.setname("krishna"); Employee swapnika = new Employee(); swapnika.setname("swapnika"); swapnika.setsalary(30000); SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = factory.opensession(); Transaction tx = null; try { tx = session.begintransaction(); session.save(swapnika); Query query = session.createquery("from com.glarimy.hbm.person"); List<Person> persons = query.list(); for (Person p : persons) System.out.println(p); tx.commit(); catch (Exception e) { e.printstacktrace(); if (tx!= null)
tx.rollback(); finally { tx = null; session.close(); hibernate.cfg.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> name="hibernate.connection.url">jdbc:mysql://localhost/hbm</property> name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> name="hibernate.connection.username">root</property> name="hibernate.connection.password">admin</property> name="hibernate.hbm2ddl.auto">create-drop</property> name="dialect">org.hibernate.dialect.mysqlinnodbdialect</property> <mapping class="com.glarimy.hbm.employee" /> </session-factory> </hibernate-configuration>