Hibernate learning-Set Configuration

Source: Internet
Author: User

Set configuration

Create a data table:

create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );


create table CERTIFICATE ( id INT NOT NULL auto_increment, certificate_name VARCHAR(30) default NULL, employee_id INT default NULL, PRIMARY KEY (id) );


Create an object:

package com.study01;import java.util.Set;public class Employee {private int id;private String firstName;private String lastName;private int salary;private Set certificates;public Employee() {}public Employee(String fname, String lname, int salary) {this.firstName = fname;this.lastName = lname;this.salary = salary;}public int getId() {return id;}public void setId(int id) {this.id = id;}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 getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}public Set getCertificates() {return certificates;}public void setCertificates(Set certificates) {this.certificates = certificates;}}


package com.study01;public class Certificate {private int id;private String name;public Certificate() {}public Certificate(String name) {this.name = 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;}public boolean equals(Object obj) {if (obj == null)return false;if (!this.getClass().equals(obj.getClass()))return false;Certificate obj2 = (Certificate) obj;//if ((this.id == obj2.getId()) && (this.name.equals(obj2.getName()))) {//return true;//}if(this.name.equals(obj2.getName())) return true;return false;}public int hashCode() {int tmp = 0;tmp = (id + name).hashCode();return tmp;}}


Note that the equals and hashCode methods are rewritten here. The elements in the set are not repeated. Whether it is repeated is compared using the hashCode and equals methods.

The configuration of the hibernate main configuration file is as follows:

  
 
  
   
     org.hibernate.dialect.MySQLDialect 
   
   
     com.mysql.jdbc.Driver 
    
   
   
     jdbc:mysql://localhost/test 
   
   
     root 
   
   
     253503125 
    
   
   
   
  
 


Ing file Configuration:

 
 
  
    This class contains the employee detail. 
   
    
   
   
    
    
   
   
   
   
  
 


 
 
  
    This class contains the certificate records. 
   
    
   
   
  
 


Test:

package com.study01;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class ManageEmployee {private static SessionFactory factory;public static void main(String[] args) {try {factory = new Configuration().configure().buildSessionFactory();} catch (Throwable ex) {System.err.println("Failed to create sessionFactory object." + ex);throw new ExceptionInInitializerError(ex);}ManageEmployee ME = new ManageEmployee();HashSet set1 = new HashSet();set1.add(new Certificate("MCA"));set1.add(new Certificate("MBA"));set1.add(new Certificate("PMP"));set1.add(new Certificate("MCA"));/* Add employee records in the database */Integer empID1 = ME.addEmployee("Manoj", "Kumar", 4000, set1); HashSet set2 = new HashSet();set2.add(new Certificate("BCA"));set2.add(new Certificate("BA")); Integer empID2 = ME.addEmployee("Dilip", "Kumar", 3000, set2);ME.listEmployees(); /* Update employee's salary records */ME.updateEmployee(empID1, 5000);/* Delete an employee from the database */ME.deleteEmployee(empID2); /* List down all the employees */System.out.println("======================");ME.listEmployees();} /* Method to add an employee record in the database */public Integer addEmployee(String fname, String lname, int salary, Set cert) {Session session = factory.openSession();Transaction tx = null;Integer employeeID = null;try {tx = session.beginTransaction();Employee employee = new Employee(fname, lname, salary);employee.setCertificates(cert);employeeID = (Integer) session.save(employee);tx.commit();} catch (HibernateException e) {if (tx != null)tx.rollback();e.printStackTrace();} finally {session.close();}return employeeID;} /* Method to list all the employees detail */public void listEmployees() {Session session = factory.openSession();Transaction tx = null;try {tx = session.beginTransaction();List employees = session.createQuery("FROM Employee").list();for (Iterator iterator1 = employees.iterator(); iterator1.hasNext();) {Employee employee = (Employee) iterator1.next();System.out.print("First Name: " + employee.getFirstName());System.out.print(" Last Name: " + employee.getLastName());System.out.println(" Salary: " + employee.getSalary());Set certificates = employee.getCertificates();for (Iterator iterator2 = certificates.iterator(); iterator2.hasNext();) {Certificate certName = (Certificate) iterator2.next();System.out.println("Certificate: " + certName.getName());}}tx.commit();} catch (HibernateException e) {if (tx != null)tx.rollback();e.printStackTrace();} finally {session.close();}} /* Method to update salary for an employee */public void updateEmployee(Integer EmployeeID, int salary) {Session session = factory.openSession();Transaction tx = null;try {tx = session.beginTransaction();Employee employee = (Employee) session.get(Employee.class,EmployeeID);employee.setSalary(salary);session.update(employee);tx.commit();} catch (HibernateException e) {if (tx != null)tx.rollback();e.printStackTrace();} finally {session.close();}} /* Method to delete an employee from the records */public void deleteEmployee(Integer EmployeeID) {Session session = factory.openSession();Transaction tx = null;try {tx = session.beginTransaction();Employee employee = (Employee) session.get(Employee.class,EmployeeID);session.delete(employee);tx.commit();} catch (HibernateException e) {if (tx != null)tx.rollback();e.printStackTrace();} finally {session.close();}} }


Note that two MCA s are added to Certificate. The running result is as follows:

First Name: Manoj Last Name: Kumar Salary: 4000Certificate: PMPCertificate: MCACertificate: MBAFirst Name: Dilip Last Name: Kumar Salary: 3000Certificate: BCACertificate: BA======================First Name: Manoj Last Name: Kumar Salary: 5000Certificate: PMPCertificate: MCACertificate: MBA


The MCA only appears once! Note the role of hashCode and equals in Certificate.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.