Was ist der Unterschied zwischen Data Access Objects (DAO) und Repository Patterns? Ich entwickle eine Anwendung mit Enterprise Java Beans (EJB3), Hibernate ORM als Infrastruktur und Domain-Driven Design (DDD) und Test-Driven Development (TDD) als Entwurfstechniken.
Antworten
Zu viele Anzeigen?DAOs müssen nicht immer explizit mit Only DataBase verbunden sein,
Es kann nur eine Schnittstelle sein, um auf Daten zuzugreifen. Auf Daten kann in diesem Zusammenhang von DB/Cache oder sogar REST zugegriffen werden (heutzutage nicht mehr so üblich, da wir sie leicht in ihren jeweiligen Rest/IPC-Clients trennen können),
Repo hier in diesem Ansatz durch eine der ORM-Lösungen implementiert werden, wenn die zugrunde liegende Cache / Repo Änderungen wird es nicht propagiert werden / Auswirkungen Service / Business Layers.
DAOs können Domänentypen akzeptieren/zurückgeben. Nehmen wir an, die zugehörige DAO-Klasse ist StudentDao
StudentDao {
StudentRepository,
StudentCache,
Optional<Student> getStudent(Id){
// Use StudentRepository/StudentCache to Talk to DD & Cache
// Cache Type can be the same as Domain Type, DB Type(Entities) should be a Same/Different Type.
}
Student updateStudent(Student){
// Use StudentRepository/StudentCache to Talk to DD & Cache
// Cache Type can be the same as Domain Type, DB Type(Entities) should be a Same/Different Type.
}
}
DAOs können SubDomain-Typen akzeptieren/zurückgeben. Betrachten Sie eine Studentendomäne, die eine Unterdomäne hat, z.B. Anwesenheit/Fach, die eine DAO-Klasse StudentDao haben wird,
StudentDao {
StudentRepository, SubjectRepository, AttendanceRepository
StudentCache, SubjectCache, AttendanceCache
Set<Subject> getStudentSubject(Id){
// Use SubjectRepository/SubjectCache to Talk to DD & Cache
}
Student addNewSubjectToStudent(ID, Subject){
// Use SubjectRepository/SubjectCache to Talk to DD & Cache
}
}
- See previous answers
- Weitere Antworten anzeigen