JEE 设计模式

ops/2024/9/23 11:15:30/

Java 数据访问对象模式

Java设计模式 - 数据访问对象模式

数据访问对象模式或DAO模式将数据访问API与高级业务服务分离。

DAO模式通常具有以下接口和类。

  • 数据访问对象接口定义模型对象的标准操作。

  • 数据访问对象类实现以上接口。可能有多个实现,例如,一个用于数据库,一个用于文件。

  • 模型对象简单的POJO包含get/set方法来存储数据。

例子

import java.util.ArrayList;
import java.util.List;class Employee {private String name;private int id;Employee(String name, int id) {this.name = name;this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}interface EmployeeDao {public List<Employee> getAll();public Employee get(int id);public void updateStudent(Employee student);public void delete(Employee student);
}class EmployeeDaoImpl implements EmployeeDao {List<Employee> employeeList;public EmployeeDaoImpl() {employeeList = new ArrayList<Employee>();Employee emp1 = new Employee("Jack", 0);Employee emp2 = new Employee("Tom", 1);employeeList.add(emp1);employeeList.add(emp2);}@Overridepublic void delete(Employee student) {employeeList.remove(student.getId());System.out.println("Employee: No " + student.getId()+ ", deleted from database");}@Overridepublic List<Employee> getAll() {return employeeList;}@Overridepublic Employee get(int rollNo) {return employeeList.get(rollNo);}@Overridepublic void updateStudent(Employee emp) {employeeList.get(emp.getId()).setName(emp.getName());System.out.println("Emp:No " + emp.getId()+ ", updated in the database");}
}public class Main {public static void main(String[] args) {EmployeeDao empDao = new EmployeeDaoImpl();for (Employee emp : empDao.getAll()) {System.out.println("Emp: [No : " + emp.getId() + ", Name : "+ emp.getName() + " ]");}Employee emp = empDao.getAll().get(0);emp.setName("Jane");empDao.updateStudent(emp);empDao.get(0);System.out.println("Emp: [No : " + emp.getId() + ", Name : "+ emp.getName() + " ]");}
}

上面的代码生成以下结果。


http://www.ppmy.cn/ops/110963.html

相关文章

springboot后端开发-常见注解及其用途

文章目录 1. 组件注解2. 依赖注入注解3. 配置类注解4. 测试注解5. 控制器注解6. 安全和认证注解7. 切面相关注解8. API文档相关注解(需引入swagger)9. 其他注解 在Spring Boot框架中&#xff0c;有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面…

SQL注入(数据库)简介

SQL注入简介 SQL注入的历史地位&#xff1a;SQL注入的原理&#xff1a;SQL的防范措施&#xff1a;总结: SQL注入的历史地位&#xff1a; SQL注入技术是WEB安全史上的一个转折点&#xff0c;在SQL技术兴起之前&#xff0c;黑客的主要攻击对象是系统软件&#xff0c;在黑客与安全…

【贪心算法】(二)贪心算法区间问题及进阶习题

贪心算法区间问题及进阶习题 贪心算法解决区间问题跳跃问题1. 跳跃游戏2. 跳跃游戏 Ⅱ 重叠区间问题3. 用最少数量的箭引爆气球4. 无重叠区间5. 划分字母区间6. 合并区间 其他问题7. 最大子序和8. 加油站9. 监控二叉树 贪心算法解决区间问题 跳跃问题 对于跳跃问题这一类问题&…

媒体服务器软件BUG说明及改进方案

媒体服务器软件BUG说明及改进方案 一、BUG描述二、问题分析三、改进方案四、实施计划五、预期效果六、总结一、BUG描述 在当前版本的媒体服务器中,存在一个关于静音媒体流处理的问题。具体表现为:当主叫连续发送静音帧到媒体服务器时,媒体服务器并未将这些静音帧转发给被叫…

Linux:五种IO模型

1&#xff1a;五种IO模型 1&#xff1a;阻塞IO 阻塞IO: 在内核将数据准备好之前,系统调用会一直等待.所有的套接字,默认 都是阻塞方式。 2&#xff1a;非阻塞 IO 非阻塞 IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK 错误码。 非阻塞 IO 往往需…

sql语句在mysql中的执行过程

在MySQL中&#xff0c;SQL语句的执行大致可以分为以下步骤&#xff1a; 语法解析&#xff1a;MySQL通过语法分析器检查SQL语句的语法是否正确。 语义分析&#xff1a;分析SQL语句要操作的数据库对象是否存在&#xff0c;用户是否有权限操作。 生成执行计划&#xff1a;MySQL的…

Java 21的Concurrency的笔记

Java Core LibrariesConcurrency Concurrency API包括&#xff1a; Virtual threads Structured concurrency Task scheduling framework 即线程池&#xff0c;常见、易用。 Fork/join framework 即ForkJoinPool&#xff0c;不过目前还没有在项目中实际使用过。 Concurrent…

Cache Aside pattern

Cache Aside&#xff08;旁路缓存&#xff09;模式是一种常见的缓存策略&#xff0c;用于减少数据库的读取压力&#xff0c;提高应用的性能。这种模式通常用于读多写少的场景。Cache Aside 模式的工作原理如下&#xff1a; 读取数据&#xff1a; 首先&#xff0c;应用尝试从缓存…