日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JavaBean中DAO設計模式介紹

 昵稱27831725 2015-11-11
分類: 【Java Web】 2011-10-21 23:29 18952人閱讀 評論(11) 收藏 舉報

目錄(?)[+]


一、信息系統(tǒng)的開發(fā)架構


客戶層-------顯示層-------業(yè)務層---------數據層---------數據庫

1.客戶層:客戶層就是客戶端,簡單的來說就是瀏覽器。

2.顯示層:JSP/Servlet,用于給瀏覽器顯示。

3.業(yè)務層:對于數據層的原子操作進行整合。

4.數據層:對于數據庫進行的原子操作,增加、刪除等;


二、DAO(Data Access Object)介紹


DAO應用在數據層那塊,用于訪問數據庫,對數據庫進行操作的類。


三、DAO設計模式的結構


DAO設計模式一般分為幾個類:

1.VO(Value Object):一個用于存放網頁的一行數據即一條記錄的類,比如網頁要顯示一個用戶的信息,則這個類就是用戶的類。

2.DatabaseConnection:用于打開和關閉數據庫。

3.DAO接口:用于聲明對于數據庫的操作。

4.DAOImpl:必須實現DAO接口,真實實現DAO接口的函數,但是不包括數據庫的打開和關閉。

5.DAOProxy:也是實現DAO接口,但是只需要借助DAOImpl即可,但是包括數據庫的打開和關閉。

6.DAOFactory:工廠類,含有getInstance()創(chuàng)建一個Proxy類。


四、DAO的好處


DAO的好處就是提供給用戶的接口只有DAO的接口,所以如果用戶想添加數據,只需要調用create函數即可,不需要數據庫的操作。


五、DAO包命名


對于DAO,包的命名和類的命名一定要有層次。


六、實例解析


1.Emp.java

  1. package org.vo;  
  2. import java.util.*;  
  3. public class Emp{  
  4.     private int empno;  
  5.     private String ename;  
  6.     private String job;  
  7.     private Date hireDate;  
  8.     private float sal;  
  9.     public Emp(){  
  10.           
  11.     }  
  12.     public int getEmpno(){  
  13.         return empno;  
  14.     }  
  15.     public void setEmpno(int empno){  
  16.         this.empno = empno;  
  17.     }  
  18.     public String getEname(){  
  19.         return ename;  
  20.     }  
  21.     public void setEname(String ename){  
  22.         this.ename = ename;  
  23.     }  
  24.     public Date getHireDate(){  
  25.         return hireDate;  
  26.     }  
  27.     public void setHireDate(Date hireDate){  
  28.         this.hireDate = hireDate;  
  29.     }  
  30.     public float getSal(){  
  31.         return sal;  
  32.     }  
  33.     public void setSal(float sal){  
  34.         this.sal = sal;  
  35.     }  
  36.     public String getJob(){  
  37.         return job;  
  38.     }  
  39.     public void setJob(String job){  
  40.         this.job = job;  
  41.     }  
  42. }  
2.DatabaseConnection.java

  1. package org.dbc;  
  2. import java.sql.*;  
  3. public class DatabaseConnection{  
  4.     private Connection con = null;  
  5.     private static final String DRIVER = "com.mysql.jdbc.Driver";  
  6.     private static final String USER = "root";  
  7.     private static final String URL = "jdbc:mysql://localhost:3306/mldn";  
  8.     private static final String PASS = "12345";  
  9.     public DatabaseConnection()throws Exception{  
  10.         Class.forName(DRIVER);  
  11.         con = DriverManager.getConnection(URL,USER,PASS);  
  12.     }  
  13.     public Connection getConnection()throws Exception{  
  14.         return con;  
  15.     }  
  16.     public void close()throws Exception{  
  17.         if(con!=null){  
  18.             con.close();  
  19.         }  
  20.     }  
  21. }  
3.IEmpDAO.java

  1. package org.dao;  
  2. import java.util.List;  
  3. import org.vo.*;  
  4. public interface IEmpDAO{  
  5.     public boolean doCreate(Emp emp)throws Exception;  
  6.     public List<Emp> findAll()throws Exception;  
  7.     public Emp findById(int empno)throws Exception;  
  8. }  
4.EmpDAOImpl.java

  1. package org.dao.impl;  
  2. import org.dao.*;  
  3. import java.sql.*;  
  4. import org.vo.*;  
  5. import java.util.*;  
  6. public class EmpDAOImpl implements IEmpDAO{  
  7.     private Connection con;  
  8.     private PreparedStatement stat = null;  
  9.     public EmpDAOImpl(Connection con){  
  10.         this.con = con;  
  11.     }  
  12.     public boolean doCreate(Emp emp)throws Exception{  
  13.         String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";  
  14.         stat = con.prepareStatement(sql);  
  15.         stat.setInt(1,emp.getEmpno());  
  16.         stat.setString(2,emp.getEname());  
  17.         stat.setString(3,emp.getJob());  
  18.         stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));  
  19.         stat.setFloat(5,emp.getSal());  
  20.         int update = stat.executeUpdate();  
  21.         if(update>0){  
  22.             return true;  
  23.         }  
  24.         else{  
  25.             return false;  
  26.         }  
  27.     }  
  28.     public List<Emp> findAll()throws Exception{  
  29.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";  
  30.         stat = con.prepareStatement(sql);  
  31.         ResultSet rs = stat.executeQuery();  
  32.         Emp emp = null;  
  33.         List<Emp> list = new ArrayList<Emp>();  
  34.         while(rs.next()){  
  35.             int empno = rs.getInt(1);  
  36.             String ename = rs.getString(2);  
  37.             String job = rs.getString(3);  
  38.             float sal = rs.getFloat(5);  
  39.             emp = new Emp();  
  40.             emp.setEmpno(empno);  
  41.             emp.setEname(ename);  
  42.             emp.setJob(job);  
  43.             emp.setHireDate(rs.getDate(4));  
  44.             emp.setSal(sal);  
  45.             list.add(emp);  
  46.         }  
  47.         return list;  
  48.     }  
  49.     public Emp findById(int empno)throws Exception{  
  50.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";  
  51.         stat = con.prepareStatement(sql);  
  52.         stat.setInt(1,empno);  
  53.         ResultSet rs = stat.executeQuery();  
  54.         Emp emp = null;  
  55.         if(rs.next()){  
  56.             String ename = rs.getString(2);  
  57.             String job = rs.getString(3);  
  58.             float sal = rs.getFloat(5);  
  59.             emp = new Emp();  
  60.             emp.setEmpno(empno);  
  61.             emp.setEname(ename);  
  62.             emp.setJob(job);  
  63.             emp.setHireDate(rs.getDate(4));  
  64.             emp.setSal(sal);  
  65.         }  
  66.         return emp;  
  67.     }  
  68. }  

5.EmpDAOProxy.java

  1. package org.dao.impl;  
  2. import org.dao.*;  
  3. import java.sql.*;  
  4. import org.vo.*;  
  5. import java.util.*;  
  6. import org.dbc.*;  
  7. public class EmpDAOProxy implements IEmpDAO{  
  8.     private DatabaseConnection dbc;  
  9.     private IEmpDAO dao = null;  
  10.     public EmpDAOProxy()throws Exception{  
  11.         dbc = new DatabaseConnection();  
  12.         dao = new EmpDAOImpl(dbc.getConnection());  
  13.     }  
  14.     public boolean doCreate(Emp emp)throws Exception{  
  15.         boolean flag = false;  
  16.         if(dao.findById(emp.getEmpno())==null){  
  17.             flag = dao.doCreate(emp);  
  18.         }  
  19.         dbc.close();  
  20.         return flag;  
  21.     }  
  22.     public List<Emp> findAll()throws Exception{  
  23.         List<Emp>list = dao.findAll();  
  24.         dbc.close();  
  25.         return list;  
  26.     }  
  27.     public Emp findById(int empno)throws Exception{  
  28.         Emp emp = dao.findById(empno);  
  29.         dbc.close();  
  30.         return emp;  
  31.     }  
  32. }  
6.DAOFactory.java

  1. package org.dao.factory;  
  2. import org.dao.*;  
  3. import java.sql.*;  
  4. import org.vo.*;  
  5. import java.util.*;  
  6. import org.dbc.*;  
  7. import org.dao.impl.*;  
  8. public class DAOFactory{  
  9.     public static IEmpDAO getInstance(){  
  10.         IEmpDAO dao = null;  
  11.         try{  
  12.             dao = new EmpDAOProxy();      
  13.         }  
  14.         catch(Exception e){  
  15.             e.printStackTrace();  
  16.         }  
  17.         return dao;  
  18.     }  
  19. }  

7.TestDAO.java

  1. package org.dao.test;  
  2. import org.dao.factory.*;  
  3. import org.vo.*;  
  4. import org.dao.*;  
  5. public class TestDAO{  
  6.     public static void main(String args[])throws Exception{  
  7.         Emp emp = null;  
  8.         for(int i=0;i<5;i++){  
  9.             emp = new Emp();  
  10.             emp.setEmpno(i);  
  11.             emp.setEname("xiazdong-"+i);  
  12.             emp.setJob("stu-"+i);  
  13.             emp.setHireDate(new java.util.Date());  
  14.             emp.setSal(500*i);  
  15.             DAOFactory.getInstance().doCreate(emp);  
  16.         }  
  17.     }  
  18. }  

通過DAO設計模式,可以在JSP中屏蔽了數據庫連接的操作,達到JSP只負責顯示的效果。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多