데이터 액세스 객체 패턴
데이터 액세스 개체 패턴 또는 DAO 패턴은 낮은 수준의 데이터 액세스 API 또는 작업을 높은 수준의 비즈니스 서비스와 분리하는 데 사용됩니다. 다음은 Data Access Object 패턴의 참여자입니다.
데이터 액세스 객체 인터페이스 - 이 인터페이스는 모델 객체에 대해 수행될 표준 작업을 정의합니다.
데이터 액세스 객체 구체적 클래스 - 이 클래스는 위의 인터페이스를 구현합니다. 이 클래스는 데이터베이스, XML 또는 기타 저장 메커니즘일 수 있는 데이터 소스에서 데이터를 가져오는 일을 담당합니다.
모델 개체/값 개체 - 이 개체는 DAO 클래스를 사용하여 검색된 데이터를 저장하는 get/set 메서드가 포함된 간단한 POJO입니다.
Implementation
모델 객체 또는 숫자 객체인 Student 객체를 생성하겠습니다. StudentDao는 데이터 액세스 개체 인터페이스입니다. StudentDaoImpl은 데이터 접근 객체 인터페이스를 구현하는 엔터티 클래스입니다. DaoPatternDemo, 데모 클래스에서는 StudentDao를 사용하여 데이터 액세스 개체 패턴의 사용법을 보여줍니다.
1단계
숫자 객체를 만듭니다.
Student.java
public class Student { private String name; private int rollNo; Student(String name, int rollNo){ this.name = name; this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } }
2단계
데이터 액세스 개체 인터페이스를 만듭니다.
StudentDao.java
import java.util.List; public interface StudentDao { public List<Student> getAllStudents(); public Student getStudent(int rollNo); public void updateStudent(Student student); public void deleteStudent(Student student); }
3단계
위 인터페이스를 구현하는 엔터티 클래스를 만듭니다.
StudentDaoImpl.java
import java.util.ArrayList; import java.util.List; public class StudentDaoImpl implements StudentDao { //列表是当作一个数据库 List<Student> students; public StudentDaoImpl(){ students = new ArrayList<Student>(); Student student1 = new Student("Robert",0); Student student2 = new Student("John",1); students.add(student1); students.add(student2); } @Override public void deleteStudent(Student student) { students.remove(student.getRollNo()); System.out.println("Student: Roll No " + student.getRollNo() +", deleted from database"); } //从数据库中检索学生名单 @Override public List<Student> getAllStudents() { return students; } @Override public Student getStudent(int rollNo) { return students.get(rollNo); } @Override public void updateStudent(Student student) { students.get(student.getRollNo()).setName(student.getName()); System.out.println("Student: Roll No " + student.getRollNo() +", updated in the database"); } }
4단계
StudentDao를 사용하여 데이터 액세스 개체 패턴의 사용법을 보여줍니다.
CompositeEntityPatternDemo.java
public class DaoPatternDemo { public static void main(String[] args) { StudentDao studentDao = new StudentDaoImpl(); //输出所有的学生 for (Student student : studentDao.getAllStudents()) { System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } //更新学生 Student student =studentDao.getAllStudents().get(0); student.setName("Michael"); studentDao.updateStudent(student); //获取学生 studentDao.getStudent(0); System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } }
5단계
출력을 확인합니다.
rreee