DAO = Data Access Object
DAO模式将数据控制层和业务逻辑层分离。
DAO模式的实践,大抵可以分成三个部分:
1)数据实现(DAO)
2)Model
3)Service
这里的数据实现,可以直接通过JDBC的方式,或者Hibernate之类,数据控制与业务逻辑层的分离,道理也在这里。
Model可以理解为普通的POJO。
而Service则是就复杂情况而言的,包含了多个DAO的组合,加入了事务等处理。
看具体代码:
DAO部分:
1-1. com.cleversoft.lab.dao.CollegeDAO.java:
 package com.cleversoft.lab.dao;
package com.cleversoft.lab.dao;

 import java.util.List;
import java.util.List;
 import java.util.Map;
import java.util.Map;


 public interface CollegeDAO
public interface CollegeDAO  {
{
 public List getAllColleges();
    public List getAllColleges();

 public Map getCollegesMap();
    public Map getCollegesMap();
 }
}
1-2. com.cleversoft.lab.dao.CollegeDAOImp.java:
 package com.cleversoft.lab.dao;
package com.cleversoft.lab.dao;

 import java.util.ArrayList;
import java.util.ArrayList;
 import java.util.HashMap;
import java.util.HashMap;
 import java.util.Iterator;
import java.util.Iterator;
 import java.util.List;
import java.util.List;
 import java.util.Map;
import java.util.Map;

 import com.cleversoft.lab.model.College;
import com.cleversoft.lab.model.College;


 public class CollegeDAOImp implements CollegeDAO
public class CollegeDAOImp implements CollegeDAO  {
{
 private static ArrayList<College> colleges;
    private static ArrayList<College> colleges;

 private static HashMap<Integer, College> collegesMap;
    private static HashMap<Integer, College> collegesMap;


 static
    static  {
{
 colleges = new ArrayList<College>();
        colleges = new ArrayList<College>();
 colleges.add(new College(1, "常熟理工学院", "说明1"));
        colleges.add(new College(1, "常熟理工学院", "说明1"));
 colleges.add(new College(2, "苏州大学", "说明2"));
        colleges.add(new College(2, "苏州大学", "说明2"));
 colleges.add(new College(3, "北京大学", "说明3"));
        colleges.add(new College(3, "北京大学", "说明3"));

 collegesMap = new HashMap<Integer, College>();
        collegesMap = new HashMap<Integer, College>();
 Iterator i = colleges.iterator();
        Iterator i = colleges.iterator();

 while (i.hasNext())
        while (i.hasNext())  {
{
 College college = (College) i.next();
            College college = (College) i.next();
 collegesMap.put(college.getCollegeID(), college);
            collegesMap.put(college.getCollegeID(), college);
 }
        }
 }
    }


 public List getAllColleges()
    public List getAllColleges()  {
{
 return colleges;
        return colleges;
 }
    }


 public Map getCollegesMap()
    public Map getCollegesMap()  {
{
 return collegesMap;
        return collegesMap;
 }
    }

 }
}
2-1. com.cleversoft.lab.dao.DepartmentDAO.java:
 package com.cleversoft.lab.dao;
package com.cleversoft.lab.dao;

 import java.util.List;
import java.util.List;

 import com.cleversoft.lab.model.Department;
import com.cleversoft.lab.model.Department;


 public interface DepartmentDAO
public interface DepartmentDAO  {
{
 public List getAllDepartments();
    public List getAllDepartments();

 public Department getDepartment(Integer id);
    public Department getDepartment(Integer id);

 public void update(Department dep);
    public void update(Department dep);

 public void insert(Department dep);
    public void insert(Department dep);

 public void delete(Integer id);
    public void delete(Integer id);
 }
}
2-2. com.cleversoft.lab.dao.DepartmentDAOImp.java:
 package com.cleversoft.lab.dao;
package com.cleversoft.lab.dao;

 import java.util.ArrayList;
import java.util.ArrayList;
 import java.util.Iterator;
import java.util.Iterator;
 import java.util.List;
import java.util.List;
 import java.util.Map;
import java.util.Map;

 import com.cleversoft.lab.model.College;
import com.cleversoft.lab.model.College;
 import com.cleversoft.lab.model.Department;
import com.cleversoft.lab.model.Department;


 public class DepartmentDAOImp implements DepartmentDAO
public class DepartmentDAOImp implements DepartmentDAO  {
{
 private static ArrayList<Department> departments;
    private static ArrayList<Department> departments;

 @SuppressWarnings("unused")
    @SuppressWarnings("unused")
 private static Map collegesMap;
    private static Map collegesMap;


 static
    static  {
{
 departments = new ArrayList<Department>();
        departments = new ArrayList<Department>();
 departments.add(new Department(1, "计算机系", "说明1", new College(1,
        departments.add(new Department(1, "计算机系", "说明1", new College(1,
 "常熟理工学院", "说明1")));
                "常熟理工学院", "说明1")));
 departments.add(new Department(2, "计算机系", "说明2", new College(2, "苏州大学",
        departments.add(new Department(2, "计算机系", "说明2", new College(2, "苏州大学",
 "说明2")));
                "说明2")));
 departments.add(new Department(3, "计算机系", "说明3", new College(3, "北京大学",
        departments.add(new Department(3, "计算机系", "说明3", new College(3, "北京大学",
 "说明3")));
                "说明3")));

 CollegeDAO collegeDAO = new CollegeDAOImp();
        CollegeDAO collegeDAO = new CollegeDAOImp();
 collegesMap = collegeDAO.getCollegesMap();
        collegesMap = collegeDAO.getCollegesMap();
 }
    }


 public void delete(Integer id)
    public void delete(Integer id)  {
{

 for (int i = 0; i < departments.size(); i++)
        for (int i = 0; i < departments.size(); i++)  {
{
 Department department = (Department) departments.get(i);
            Department department = (Department) departments.get(i);

 if (department.getDepartmentID().equals(id))
            if (department.getDepartmentID().equals(id))  {
{
 departments.remove(i);
                departments.remove(i);
 break;
                break;
 }
            }
 }
        }
 }
    }


 public List getAllDepartments()
    public List getAllDepartments()  {
{
 return departments;
        return departments;
 }
    }


 public Department getDepartment(Integer id)
    public Department getDepartment(Integer id)  {
{
 Department dep = null;
        Department dep = null;
 Iterator i = departments.iterator();
        Iterator i = departments.iterator();

 while (i.hasNext())
        while (i.hasNext())  {
{
 dep = (Department) i.next();
            dep = (Department) i.next();

 if (dep.getDepartmentID().equals(id))
            if (dep.getDepartmentID().equals(id))  {
{
 break;
                break;
 }
            }
 }
        }
 return dep;
        return dep;
 }
    }


 public void insert(Department dep)
    public void insert(Department dep)  {
{
 int lastId = 0;
        int lastId = 0;
 Iterator i = departments.iterator();
        Iterator i = departments.iterator();

 while (i.hasNext())
        while (i.hasNext())  {
{
 Department department = (Department) i.next();
            Department department = (Department) i.next();

 if (department.getDepartmentID() > lastId)
            if (department.getDepartmentID() > lastId)  {
{
 lastId = department.getDepartmentID();
                lastId = department.getDepartmentID();
 }
            }
 }
        }
 dep.setCollege((College) collegesMap.get(dep.getCollege()
        dep.setCollege((College) collegesMap.get(dep.getCollege()
 .getCollegeID()));
                .getCollegeID()));
 dep.setDepartmentID(lastId + 1);
        dep.setDepartmentID(lastId + 1);
 departments.add(dep);
        departments.add(dep);
 }
    }


 public void update(Department dep)
    public void update(Department dep)  {
{
 Integer id = dep.getDepartmentID();
        Integer id = dep.getDepartmentID();

 for (int i = 0; i < departments.size(); i++)
        for (int i = 0; i < departments.size(); i++)  {
{
 Department department = (Department) departments.get(i);
            Department department = (Department) departments.get(i);

 if (department.getDepartmentID().equals(id))
            if (department.getDepartmentID().equals(id))  {
{
 dep.setCollege((College) collegesMap.get(dep.getCollege()
                dep.setCollege((College) collegesMap.get(dep.getCollege()
 .getCollegeID()));
                        .getCollegeID()));
 departments.set(i, dep);
                departments.set(i, dep);
 break;
                break;
 }
            }
 }
        }
 }
    }

 }
}Model部分:
1. com.cleversoft.lab.model.College.java:
 package com.cleversoft.lab.model;
package com.cleversoft.lab.model;

 import java.io.Serializable;
import java.io.Serializable;

 @SuppressWarnings("serial")
@SuppressWarnings("serial")

 public class College implements Serializable
public class College implements Serializable  {
{
 Integer collegeID;
    Integer collegeID;

 String collegeName;
    String collegeName;

 String collegeDesc;
    String collegeDesc;


 public College()
    public College()  {
{
 }
    }


 public College(Integer collegeID, String collegeName, String collegeDesc)
    public College(Integer collegeID, String collegeName, String collegeDesc)  {
{
 this.collegeID = collegeID;
        this.collegeID = collegeID;
 this.collegeName = collegeName;
        this.collegeName = collegeName;
 this.collegeDesc = collegeDesc;
        this.collegeDesc = collegeDesc;
 }
    }


 public String getCollegeDesc()
    public String getCollegeDesc()  {
{
 return collegeDesc;
        return collegeDesc;
 }
    }


 public void setCollegeDesc(String collegeDesc)
    public void setCollegeDesc(String collegeDesc)  {
{
 this.collegeDesc = collegeDesc;
        this.collegeDesc = collegeDesc;
 }
    }


 public Integer getCollegeID()
    public Integer getCollegeID()  {
{
 return collegeID;
        return collegeID;
 }
    }


 public void setCollegeID(Integer collegeID)
    public void setCollegeID(Integer collegeID)  {
{
 this.collegeID = collegeID;
        this.collegeID = collegeID;
 }
    }


 public String getCollegeName()
    public String getCollegeName()  {
{
 return collegeName;
        return collegeName;
 }
    }


 public void setCollegeName(String collegeName)
    public void setCollegeName(String collegeName)  {
{
 this.collegeName = collegeName;
        this.collegeName = collegeName;
 }
    }
 }
}
2. com.cleversoft.lab.model.Department.java:
 package com.cleversoft.lab.model;
package com.cleversoft.lab.model;

 import java.io.Serializable;
import java.io.Serializable;

 @SuppressWarnings("serial")
@SuppressWarnings("serial")

 public class Department implements Serializable
public class Department implements Serializable  {
{
 Integer departmentID;
    Integer departmentID;

 String departmentName;
    String departmentName;

 String departmentDesc;
    String departmentDesc;

 College college;
    College college;


 public Department()
    public Department()  {
{
 }
    }

 public Department(Integer departmentID, String departmentName,
    public Department(Integer departmentID, String departmentName,

 String departmentDesc, College college)
            String departmentDesc, College college)  {
{
 this.departmentID = departmentID;
        this.departmentID = departmentID;
 this.departmentName = departmentName;
        this.departmentName = departmentName;
 this.departmentDesc = departmentDesc;
        this.departmentDesc = departmentDesc;
 this.college = college;
        this.college = college;
 }
    }


 public College getCollege()
    public College getCollege()  {
{
 return college;
        return college;
 }
    }


 public void setCollege(College college)
    public void setCollege(College college)  {
{
 this.college = college;
        this.college = college;
 }
    }


 public String getDepartmentDesc()
    public String getDepartmentDesc()  {
{
 return departmentDesc;
        return departmentDesc;
 }
    }


 public void setDepartmentDesc(String departmentDesc)
    public void setDepartmentDesc(String departmentDesc)  {
{
 this.departmentDesc = departmentDesc;
        this.departmentDesc = departmentDesc;
 }
    }


 public Integer getDepartmentID()
    public Integer getDepartmentID()  {
{
 return departmentID;
        return departmentID;
 }
    }


 public void setDepartmentID(Integer departmentID)
    public void setDepartmentID(Integer departmentID)  {
{
 this.departmentID = departmentID;
        this.departmentID = departmentID;
 }
    }


 public String getDepartmentName()
    public String getDepartmentName()  {
{
 return departmentName;
        return departmentName;
 }
    }


 public void setDepartmentName(String departmentName)
    public void setDepartmentName(String departmentName)  {
{
 this.departmentName = departmentName;
        this.departmentName = departmentName;
 }
    }

 }
}Service:
1-1: com.cleversoft.lab.service.CollegeService.java:
 package com.cleversoft.lab.service;
package com.cleversoft.lab.service;

 import java.util.List;
import java.util.List;
 import java.util.Map;
import java.util.Map;


 public interface CollegeService
public interface CollegeService  {
{
 public List getAllColleges();
    public List getAllColleges();
 
    
 public Map getCollegesMap();
    public Map getCollegesMap();
 }
}
1-2: com.cleversoft.lab.service.CollegeDAOService.java:
 package com.cleversoft.lab.service;
package com.cleversoft.lab.service;

 import java.util.List;
import java.util.List;
 import java.util.Map;
import java.util.Map;

 import com.cleversoft.lab.dao.CollegeDAO;
import com.cleversoft.lab.dao.CollegeDAO;
 import com.cleversoft.lab.dao.CollegeDAOImp;
import com.cleversoft.lab.dao.CollegeDAOImp;


 public class CollegeDAOService implements CollegeService
public class CollegeDAOService implements CollegeService  {
{
 CollegeDAO dao;
    CollegeDAO dao;


 public CollegeDAOService()
    public CollegeDAOService()  {
{
 this.dao = new CollegeDAOImp();
        this.dao = new CollegeDAOImp();
 }
    }


 public List getAllColleges()
    public List getAllColleges()  {
{
 return dao.getAllColleges();
        return dao.getAllColleges();
 }
    }


 public Map getCollegesMap()
    public Map getCollegesMap()  {
{
 return dao.getCollegesMap();
        return dao.getCollegesMap();
 }
    }
 }
}
2-1: com.cleversoft.lab.service.DepartmentService.java:
 package com.cleversoft.lab.service;
package com.cleversoft.lab.service;

 import java.util.List;
import java.util.List;

 import com.cleversoft.lab.model.Department;
import com.cleversoft.lab.model.Department;


 public interface DepartmentService
public interface DepartmentService  {
{
 public List getAllDepartments();
    public List getAllDepartments();

 public Department getDepartment(Integer id);
    public Department getDepartment(Integer id);

 public void update(Department dep);
    public void update(Department dep);

 public void insert(Department dep);
    public void insert(Department dep);

 public void delete(Integer id);
    public void delete(Integer id);
 }
}
2-2: com.cleversoft.lab.service.DepartmentDAOService.java:
 package com.cleversoft.lab.service;
package com.cleversoft.lab.service;

 import java.util.List;
import java.util.List;

 import com.cleversoft.lab.dao.DepartmentDAO;
import com.cleversoft.lab.dao.DepartmentDAO;
 import com.cleversoft.lab.dao.DepartmentDAOImp;
import com.cleversoft.lab.dao.DepartmentDAOImp;
 import com.cleversoft.lab.model.Department;
import com.cleversoft.lab.model.Department;


 public class DepartmentDAOService implements DepartmentService
public class DepartmentDAOService implements DepartmentService  {
{
 DepartmentDAO dao;
    DepartmentDAO dao;


 public DepartmentDAOService()
    public DepartmentDAOService()  {
{
 this.dao = new DepartmentDAOImp();
        this.dao = new DepartmentDAOImp();
 }
    }


 public void delete(Integer id)
    public void delete(Integer id)  {
{
 dao.delete(id);
        dao.delete(id);
 }
    }


 public List getAllDepartments()
    public List getAllDepartments()  {
{
 return dao.getAllDepartments();
        return dao.getAllDepartments();
 }
    }


 public Department getDepartment(Integer id)
    public Department getDepartment(Integer id)  {
{
 return dao.getDepartment(id);
        return dao.getDepartment(id);
 }
    }


 public void insert(Department dep)
    public void insert(Department dep)  {
{
 dao.insert(dep);
        dao.insert(dep);
 }
    }


 public void update(Department dep)
    public void update(Department dep)  {
{
 dao.update(dep);
        dao.update(dep);
 }
    }

 }
}通过实现来看,DAO模式,思路清晰,但是实现起来,还是比较麻烦的。
而ORM又帮助我们简化了什么,下回再续!