データアクセスオブジェクトパターン
データ アクセス オブジェクト パターンまたは DAO パターンは、低レベルのデータ アクセス API または操作を高レベルのビジネス サービスから分離するために使用されます。データ アクセス オブジェクト パターンの参加者は次のとおりです。
データ アクセス オブジェクト インターフェイス - このインターフェイスは、モデル オブジェクトに対して実行される標準操作を定義します。
データ アクセス オブジェクトの具象クラス - このクラスは上記のインターフェイスを実装します。このクラスは、データベース、XML、またはその他のストレージ メカニズムであるデータ ソースからデータを取得する役割を果たします。
Model Object/Value Object - このオブジェクトは、DAO クラスを使用して取得したデータを保存するための get/set メソッドを含む単純な POJO です。
実装
モデルオブジェクトまたは数値オブジェクトのいずれかである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
出力を確認します。
りー