`

数据访问对象模式

阅读更多

数据访问对象模式

数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。

  • 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作。
  • 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口。该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者是其他的存储机制。3
  • 模型对象/数值对象(Model Object/Value Object) - 该对象是简单的 POJO,包含了 get/set 方法来存储通过使用 DAO 类检索到的数据。

1、Studen.java

package dataAccessObject.model;

/**
 * student model
 * @author kangkang.tao
 * Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。
 * 它也可以带有逻辑,在数据变化时更新控制器
 */
public class Student {

	private int rollNo;
	private String name;
	
	public Student() {
	}
	
	public Student(int rollNo, String name) {
		this.rollNo = rollNo;
		this.name = name;
	}
	public Student(String name) {
		this.name = name;
	}

	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;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", rollNo=" + rollNo + "]";
	}
	
	
}

 2、StudentDao.java

package dataAccessObject.dao;

import java.util.List;

import dataAccessObject.model.Student;

/**
 * @author kangkang.tao
 * 创建数据访问对象接口。
 * StudentDao.java
 * 该接口定义了在一个模型对象上要执行的标准操作。
 */
public interface StudentDao {
	
	public List<Student> getAll();
	
	public Student getByRollNO(int rollNO);
	
	public void delete(int rollNO);
	
	public void update(Student student);
	
	public void add(Student student);

}

 3、StudentDaoImpl.java

package dataAccessObject.daoImpl;

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

import dataAccessObject.dao.StudentDao;
import dataAccessObject.model.Student;
/**
 * 创建实现了上述接口的实体类。
 * StudentDaoImpl.java
 * @author kangkang.tao
 * 该类实现了上述的接口。该类负责从数据源获取数据,
 * 数据源可以是数据库,也可以是 xml,或者是其他的存储机制。
 */
public class StudentDaoImpl implements StudentDao{
	
	List<Student> students;
	
	// 实例化几个学生对象
	public StudentDaoImpl() {
		students = new ArrayList<Student>();
		students.add(new Student(0, "kangkang"));
		students.add(new Student(1, "klan"));
		students.add(new Student(2, "tom"));
	}

	public void add(Student student) {
		students.add(student);
	}

	public void delete(int rollNO) {
		students.remove(rollNO);
		System.out.println("delete rollNO:" +rollNO);
		List<Student> students = getAll();
		
		System.out.println("after delete:");
		for (Student student : students) {
			System.out.println(student);
		}
	}

	public List<Student> getAll() {
		return students;
	}

	public Student getByRollNO(int rollNO) {
		return students.get(rollNO);
	}
	
	public void update(Student student) {
		Student stu = students.get(student.getRollNo());
		stu.setName(student.getName());
		
		System.out.println("update student's rollNO:" +student.getRollNo());
		System.out.println(stu);
	}

}

 4.Demo.java

package dataAccessObject.demo;

import org.junit.Test;

import dataAccessObject.dao.StudentDao;
import dataAccessObject.daoImpl.StudentDaoImpl;
import dataAccessObject.model.Student;

public class Demo {

	private StudentDao studentDao = new StudentDaoImpl();
	
	@Test
	public void getAll() {
		for (Student student : studentDao.getAll()) {
			System.out.println(student);
		}
	}
	@Test
	public void getByRollNO() {
		System.out.println(studentDao.getByRollNO(1));
	}
	@Test
	public void delete() {
		studentDao.delete(0);
	}
	@Test
	public void update() {
		Student student =studentDao.getByRollNO(1);
		student.setName("update");
		studentDao.update(student);
	}
}

 

分享到:
评论

相关推荐

    JS设计模式之数据访问对象模式的实例讲解

    为了解决这类问题,一种名为“数据访问对象模式”(Data Access Object Pattern,简称DAO)的设计模式被引入。该模式通过封装数据源的访问和存储操作,来规范数据的管理与操作,并避免了数据键值的冲突。 在Web开发...

    【Java 设计模式源码】数据访问对象模式:简化数据库交互

    数据访问对象(DAO)设计模式旨在将应用程序的业务逻辑与持久层(通常是数据库或任何其他存储机制)分离。通过使用 DAO,应用程序可以访问和操作数据,而无需依赖于特定的数据库实现细节。 二、详细解释及实际示例 ...

    J2EE核心模式之DAO

    2. 参与者及其职责:数据访问对象模式通常涉及以下参与者:数据访问对象接口(定义操作数据源的方法),具体数据访问对象(实现接口的具体类),数据对象(表示数据库中的一行数据),值对象(用于封装数据对象中的...

    JDBC数据访问对象学习资料

    本学习资料主要关注JDBC在数据访问对象(DAO)模式中的应用,以实现MVC架构中的数据访问层封装。 首先,我们来理解一下MVC(Model-View-Controller)架构模式。这是一种将业务逻辑、用户界面和数据访问分离的设计...

    php设计模式 DAO(数据访问对象模式)

    php /** * 数据访问对象(Data Access Object) 示例 * * @create_date: 2010-01-04 */ class BaseDAO { var $_db = null; var $_table = null; function BaseDAO($config) { $this-&gt;_db = new MysqlDB(); // 这里的不...

    PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析

    数据访问对象(DAO)模式是一种软件设计模式,用于在应用程序中处理数据源的访问和操作。在PHP中,DAO模式可以有效地将业务逻辑与数据库操作分离,提高代码的可维护性和可扩展性。以下是DAO模式的基本概念、目标、...

    用Java实现23种设计模式

    数据访问对象模式(Dao Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器模式(Intercepting Filter Pattern) 服务定位器模式(Service Locator Pattern) 传输对象模式(Transfer Object ...

    DAO 数据访问对象

    数据访问对象(DAO,Data Access Object)是一种设计模式,它在软件工程中被用来封装对数据库的操作,使得业务逻辑层与数据存储层之间的耦合度降低。DAO模式的主要目标是提供一个接口,通过这个接口,应用程序可以...

    java设计模式&java程序设计

    3. **减少耦合:** 数据访问对象模式有助于降低业务逻辑层与数据访问层之间的耦合度,使得两者可以独立发展。 4. **提高可维护性和可扩展性:** 值对象模式通过将数据封装为对象,提高了代码的可读性和可维护性。 ###...

    基于设计模式构建数据访问中间件

    1. **工厂方法模式**:用于创建特定类型的数据访问对象。例如,可以通过工厂方法模式来创建针对不同数据库类型的连接对象。 2. **抽象工厂模式**:进一步增强了工厂方法模式的灵活性,允许根据不同的条件创建一系列...

    33种JAVA设计模式DEMO

    数据访问对象模式(Data Access Object Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器模式(Intercepting Filter Pattern) 服务定位器模式(Service Locator Pattern) 传输对象模式(Transfer...

    设计模式.docx

    #### 数据访问对象模式(Data Access Object Pattern) 数据访问对象(DAO)模式提供了一种机制,用于将底层数据源访问的细节抽象出来,从而与应用层隔离。 #### 前端控制器模式(Front Controller Pattern) ...

    数据结构与算法-面向对象的C++设计模式

    这些内容涵盖了C++中数据结构和算法的基本概念、设计模式、以及如何通过面向对象的方法来实现这些模式。知识点涵盖了从基础的数据结构(如数组、链表、栈、队列)到更高级的概念(如设计模式、算法的渐近分析),还...

    学号_姓名_实验四报告(模板)1

    策略模式与数据访问对象模式在游戏开发中的应用 策略模式是指定义一系列算法,分别封装起来,使它们之间可以互相替换,如此使得算法的变化独立于使用算法的客户。策略模式的应用场景非常广泛,特别是在游戏开发中,...

    J2EE核心模式.pdf

    4. 数据访问对象模式(Data Access Object,DAO):此模式用于封装所有与数据库交互的细节,使得业务逻辑层和数据访问层分离。DAO模式通过抽象数据库操作细节,使得业务逻辑层不需要直接依赖于数据库的具体实现。 5...

Global site tag (gtag.js) - Google Analytics