In this tutorial you will learn Data Access Object (DAO) design pattern, and also learn use it in you application
In this tutorial you will learn Data Access Object (DAO) design pattern, and also learn use it in you applicationData Access Layer has proven good in separate business logic layer and persistent layer. The DAO design pattern completely hides the data access implementation from its clients. The interfaces given to client does not changes when the underlying data source mechanism changes. this is the capability which allows the DAO to adopt different access scheme without affecting to business logic or its clients. generally it acts as a adapter between its components and database. The DAO design pattern consists of some factory classes, DAO interfaces and some DAO classes to implement those interfaces.
The Data Access object is the primary object of this design pattern. This object abstract the data access implementations for the other object to enable transparently access to the database.At first create table named student in MySql database and inset values into it as.
At first create table named student in MySql database and inset values into it as.
CREATE TABLE student (
RollNo int(9) PRIMARY KEY NOT NULL,
Name tinytext NOT NULL,
Course varchar(25) NOT NULL,
Address text
);
ConnectionFactory.java
package roseindia.net; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionFactory { String driverClassName = "com.mysql.jdbc.Driver"; String connectionUrl = "jdbc:mysql://localhost:3306/student"; String dbUser = "root"; String dbPwd = "root"; private static ConnectionFactory connectionFactory = null; private ConnectionFactory() { try { Class.forName(driverClassName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public Connection getConnection() throws SQLException { Connection conn = null; conn = DriverManager.getConnection(connectionUrl, dbUser, dbPwd); return conn; } public static ConnectionFactory getInstance() { if (connectionFactory == null) { connectionFactory = new ConnectionFactory(); } return connectionFactory; } }
StudentBean.java
package roseindia.net; import java.io.Serializable; public class StudentBean implements Serializable { int rollNo; String name; String course; String address; public StudentBean() { } public StudentBean(int roll, String name, String course, String address) { this.rollNo = roll; this.name = name; this.course = course; this.address = address; } public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
StudentJDBCDAO.java
package roseindia.net; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class StudentJDBCDAO { Connection connection = null; PreparedStatement ptmt = null; ResultSet resultSet = null; public StudentJDBCDAO() { } private Connection getConnection() throws SQLException { Connection conn; conn = ConnectionFactory.getInstance().getConnection(); return conn; } public void add(StudentBean studentBean) { try { String queryString = "INSERT INTO student(RollNo, Name, Course, Address) VALUES(?,?,?,?)"; connection = getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.setInt(1, studentBean.getRollNo()); ptmt.setString(2, studentBean.getName()); ptmt.setString(3, studentBean.getCourse()); ptmt.setString(4, studentBean.getAddress()); ptmt.executeUpdate(); System.out.println("Data Added Successfully"); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } public void update(StudentBean studentBean) { try { String queryString = "UPDATE student SET Name=? WHERE RollNo=?"; connection = getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.setString(1, studentBean.getName()); ptmt.setInt(2, studentBean.getRollNo()); ptmt.executeUpdate(); System.out.println("Table Updated Successfully"); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } public void delete(int rollNo) { try { String queryString = "DELETE FROM student WHERE RollNo=?"; connection = getConnection(); ptmt = connection.prepareStatement(queryString); ptmt.setInt(1, rollNo); ptmt.executeUpdate(); System.out.println("Data deleted Successfully"); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } public void findAll() { try { String queryString = "SELECT * FROM student"; connection = getConnection(); ptmt = connection.prepareStatement(queryString); resultSet = ptmt.executeQuery(); while (resultSet.next()) { System.out.println("Roll No " + resultSet.getInt("RollNo") + ", Name " + resultSet.getString("Name") + ", Course " + resultSet.getString("Course") + ", Address " + resultSet.getString("Address")); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (resultSet != null) resultSet.close(); if (ptmt != null) ptmt.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } }
MainClaz.java
package roseindia.net; public class MainClaz { public static void main(String[] args) { StudentJDBCDAO student = new StudentJDBCDAO(); StudentBean alok = new StudentBean(); alok.setName("Alok"); alok.setRollNo(8); alok.setCourse("MBA"); alok.setAddress("Ranchi"); StudentBean tinkoo = new StudentBean(); tinkoo.setName("Arvind"); tinkoo.setRollNo(6); // Adding Data student.add(alok); // Deleting Data student.delete(7); // Updating Data student.update(tinkoo); // Displaying Data student.findAll(); } }When you run this application it will display message as shown below:
Data Added Successfully Data deleted Successfully Table Updated Successfully Roll No 1, Name Java, Course MCA, Address Motihari Roll No 2, Name Ravi, Course BCA, Address Patna Roll No 3, Name Mansukh, Course M.Sc, Address Katihar Roll No 4, Name Raman, Course B.Tech, Address Betiah Roll No 5, Name Kanhaiya, Course M.Tech, Address Delhi Roll No 6, Name Arvind, Course MBA, Address Alligarh Roll No 8, Name Alok, Course MBA, Address Ranchi |