Я новичок в Spring Boot и у меня есть вопрос. Я представлю это как это.
DAO - это шаблон проектирования, состоящий из трех компонентов. Это
- Интерфейс DAO - используется для объявления методов, которые необходимо выполнить в DTO
- Реализация интерфейса DAO - используется для получения данных из источника данных (базы данных)
- DTO (Data Transfer Object) - используется для хранения данных для переноса между слоями.
Например, если мы получаем Student.
Student. java (DTO)
public class Student {
private String name;
private int rollNo;
Student(String name, int rollNo) {
this.name = name;
this.rollNo = rollNo;
}
//getters and setters
}
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);
}
StudentDaoImpl. java
import java.util.ArrayList;
import java.util.List;
public class StudentDaoImpl implements StudentDao {
//list is working as a database
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");
}
//retrive list of students from the 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");
}
}
Речь идет о DAO. В весенней загрузке есть JPARepository
интерфейс. Этот интерфейс был объявлен такими методами, как save(), findById()
. и мы можем использовать JPARepository
следующим образом.
@Repository
public interface StudentRepository extends JpaRepository<Student, Integer> {
}
Затем, после того, как мы сможем использовать этот интерфейс, класс Controller
.
SoftwareEngineerController. java
@RestController
@RequestMapping(value = "student")
public class SoftwareEngineerController {
@Autowired
StudentRepository studentRepository;
//to retrieve all software engineers
@GetMapping("/students")
public List<Studentr> getAllEngineers(){
return studentRepository.findAll();
}
Мне кажется, что интерфейс JPARepository
и интерфейс DAO
выполняют одну и ту же задачу. (объявите, что для работы с данными необходимы основные методы). Spring boot содержит JPARepository
, следовательно, больше не нужно, чтобы DAO находился внутри приложений весенней загрузки. Это правда?. Я новичок в весенней загрузке, так что если вы можете дать мне хорошее объяснение, я буду очень признателен.