Имеется модель объектов, DAO интерфейсы для каждого класса объектов, сервис классы с имплементацией каждого DAO интерфейса. Требуется реализовать слой DTO. Подскажите чем отличается DTO от реализации DAO? И как правильно организовать в таком случае DTO?
-
1dto - это упрощенные модельки для отдачи куда-то. Простые POJO с геттерами и сеттерами без логики. Обычно без циклических ссылок. dao тут ни при чем. – Nofate Jul 27 '16 at 11:41
-
http://ru.stackoverflow.com/questions/456623/%D0%9D%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D1%8B%D0%B9-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%B8%D1%8F-dto-poco-pojo-%D0%B8-value-object/456637#456637 – Nofate Jul 27 '16 at 11:42
1 Answers
DTO - это аббревиатура для передачи данных объекта, поэтому он используется для передачи данных между классами и модулями вашего приложения. DTO должен содержать только private поля для ваших данных, getters, setters и конструкторы. Не рекомендуется добавлять бизнес-логики методы таких классов, но это нормально, чтобы добавить некоторые утилиты.
DAO - это аббревиатура для объекта доступа к данным, поэтому он должен инкапсулировать логику для извлечения, сохранения и обновления данных в хранилище данных (базы данных, файл-системы, что угодно). Ниже приведен пример того, как интерфейсы DAO и DTO бы выглядеть следующим образом:
interface PersonDTO {
String getName();
void setName(String name);
//.....
}
interface PersonDAO {
PersonDTO findById(long id);
void save(PersonDTO person);
//.....
}
Заключение
DTO является объектом передачи данных. Это в основном объект значение, используемое для передачи структурированных данных между уровнями / слоями
DAO является объектом доступа к данным. Он несет ответственность за сокрытие деталей реализации о том, как хранятся ваши данные и как он извлекается.
- 12,720
-
1DTO тоже я как вижу интерфейс? А реализацию передачи данных уже например в UI, т.е имплементацию интерфейса где должна проходить? – Александр Дерменжи Jul 27 '16 at 13:31
-
@АлександрДерменжи реализовать Dto модель нужно на сервере , которая будет использоваться на клиенте. – Senior Pomidor Jul 27 '16 at 15:19
-
Могу я попрасить проверить то что у меня получилось? Или лучше создать отдельную тему для ревью? Имеется проект с объектами, DAO, DTO, сервисы. Так как не уверен как связан DTO с реальными объектами: https://github.com/Dermenji/WeatherOOP/tree/master/src/com/sirma – Александр Дерменжи Aug 02 '16 at 11:59
-
@АлександрДерменжи лучше создавать отдельную тему, чтобы не засорять этот вопрос – Senior Pomidor Aug 02 '16 at 12:03
-
1
-
http://ru.stackoverflow.com/questions/551178/%D0%A0%D0%B5%D0%B2%D1%8C%D1%8E-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0-object-model-dao-dto-services Буду очень рад если напишите Ваше замечание – Александр Дерменжи Aug 02 '16 at 13:00