ORM
stands for Object-relational mapping. Hibernate maps your classes to relational
tables automatically.
Let’s say I had an employee class like below,
without ORM tool like hibernate, procedure to persist employee object looks
like below.
public class Employee { private int id; private String firstName; private String lastName; private String designation; private int age; private double salary; public Employee(int id, String firstName, String lastName, String designation, int age, double salary) { super(); this.id = id; this.firstName = firstName; this.lastName = lastName; this.designation = designation; this.age = age; 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 String getDesignation() { return designation; } public void setDesignation(String designation) { this.designation = designation; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } }
I
had 4 employee objects like below.
Employee emp1 = new Employee(1, "Hari Krishna", "Gurram", "Senior Software Developer", 26, 80000); Employee emp2 = new Employee(2, "Shreyas", "Desai", "Team Manager", 35, 150000); Employee emp3 = new Employee(3, "Piyush", "Rai", "Senior Software Developer", 26, 100000); Employee emp4 = new Employee(4, "Maruti", "Borker", "Software Developer", 26, 110000);
1.If you
want to store above employee objects into database.
1. You have to open connection to database.
2. You have to create table
like below.
CREATE TABLE employee ( id int, firstName varchar(30), lastName varchar(30), designation varchar(30), age int, salary decimal, PRIMARY KEY(id) );
3. You have
to insert employee details into employee table like below.
INSERT INTO employee values(1, "Hari Krishna", "Gurram", "Senior Software Developer", 26, 80000); INSERT INTO employee values(2, "Shreyas", "Desai", "Team Manager", 35, 150000); INSERT INTO employee values(3, "Piyush", "Rai", "Senior Software Developer", 26, 100000); INSERT INTO employee values(4, "Maruti", "Borker", "Software Developer", 26, 60000);
Complete
program to insert employee details to database looks like below.
/* Step 1: import sql packages */ import java.sql.*; public class StoreEmployeeToDB { /* Update username, password and driver details here */ static Connection getConnection(){ try{ /* Step 2: Load Driver */ System.out.println("Loading/Registering driver"); Class.forName("com.mysql.jdbc.Driver"); /* Step 3: Open connection to database */ System.out.println("Connecting to database"); String url = "jdbc:mysql://localhost/sample"; String userName = "root"; String pasword = "tiger"; return DriverManager.getConnection(url, userName, pasword); } catch(Exception e){ e.printStackTrace(); return null; } } public static void main(String args[]) throws SQLException{ Connection conn = null; Statement stmt = null; try{ conn = getConnection(); /* Create table employee */ String query = "CREATE TABLE employee(id int,firstName varchar(30),lastName varchar(30),designation varchar(30),age int,salary decimal,PRIMARY KEY(id));"; stmt = conn.createStatement(); stmt.execute(query); /* Insert data to employee table */ query = "INSERT INTO employee values(1, \"Hari Krishna\", \"Gurram\", \"Senior Software Developer\", 26, 80000)"; stmt.execute(query); query = "INSERT INTO employee values(2, \"Shreyas\", \"Desai\", \"Team Manager\", 35, 150000)"; stmt.execute(query); query = "INSERT INTO employee values(3, \"Piyush\", \"Rai\", \"Senior Software Developer\", 26, 100000)"; stmt.execute(query); query = "INSERT INTO employee values(4, \"Maruti\", \"Borker\", \"Software Developer\", 26, 60000)"; stmt.execute(query); query = "SELECT * FROM employee"; ResultSet rs = stmt.executeQuery(query); while(rs.next()){ int id = rs.getInt("id"); String firstName = rs.getString("firstName"); String lastName = rs.getString("lastName"); String designation = rs.getString("designation"); int age = rs.getInt("age"); double salary = rs.getDouble("salary"); System.out.println(id +"." + firstName + " " + lastName + " " + designation + " " + age + " " + salary); } } catch(Exception e){ e.printStackTrace(); } finally{ if(stmt != null) stmt.close(); if(conn != null) conn.close(); } } }
2. To retrieve employee records from database and map these to employee objects.
1. You have to open connection to database.
2. Execute the query "SELECT
* FROM employee" statement
3. Read record by
record and map each record to one employee object.
4. Close the
connection.
Program
looks like below.
/* Step 1: import sql packages */ import java.sql.*; import java.util.*; public class GetEmployeesFromDB { /* Update username, password and driver details here */ static Connection getConnection(){ try{ /* Step 2: Load Driver */ System.out.println("Loading/Registering driver"); Class.forName("com.mysql.jdbc.Driver"); /* Step 3: Open connection to database */ System.out.println("Connecting to database"); String url = "jdbc:mysql://localhost/sample"; String userName = "root"; String pasword = "tiger"; return DriverManager.getConnection(url, userName, pasword); } catch(Exception e){ e.printStackTrace(); return null; } } public static void main(String args[]) throws SQLException{ Connection conn = null; Statement stmt = null; List<Employee> empList = new ArrayList<Employee> (); try{ conn = getConnection(); if(conn != null){ String query = "SELECT * FROM employee"; stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); while(rs.next()){ int id = rs.getInt("id"); String firstName = rs.getString("firstName"); String lastName = rs.getString("lastName"); String designation = rs.getString("designation"); int age = rs.getInt("age"); double salary = rs.getDouble("salary"); Employee emp = new Employee(id, firstName, lastName, designation, age, salary); empList.add(emp); } } } catch(Exception e){ e.printStackTrace(); } finally{ if(stmt != null) stmt.close(); if(conn != null) conn.close(); } System.out.println("Employees in DB are"); Iterator<Employee> iter = empList.iterator(); while(iter.hasNext()){ Employee emp = iter.next(); System.out.print(emp.getId() + " "); System.out.print(emp.getFirstName() + " "); System.out.print(emp.getLastName() + " "); System.out.print(emp.getDesignation() + " "); System.out.print(emp.getAge() + " "); System.out.print(emp.getSalary() + "\n"); } } }
Now observe what we
did above
1. Opening connection
to the database.
2. Modeled table such
that, Employee class can be mapped to employee table.
3. Mapped each
employee object to one record in employee table and save them in employee table.
4. Retrieve each record
from employee table and map each record to employee object.
5. Close connection
etc.
What Hibernate
offers?
1. Hibernate maps your
class to table automatically.
2. You no need to map
data externally; Hibernate will do this for you.
3. Hibernate works
with all most all databases
4. You just create
class, Hibernate create database design for you. We will see it in later posts
5. With the support of
cache provided by hibernate; data is placed in cache for better performance.
You
will understand benefits of Hibernate, once you are familiar with Hibernate.
No comments:
Post a Comment