Я видел два способа реализации дизайна DAO-DVO.
1) DVO - это объекты, а экземпляры DAO создаются с использованием фабрик, то есть DAO также являются объектами. 2) DVO снова являются объектами, но в этом случае DAO - это классы, которые содержат только статические методы, которые принимают DVO для выполнения задач.
Мне было интересно, какой способ лучше и масштабнее.




Я настоятельно рекомендую не использовать такое количество слоев, если они не являются физически наслоенными. например, если у вас есть что-то вроде многофункционального клиента, в который вам нужно отправлять отдельные объекты для обновления графического интерфейса, в противном случае это мир боли.
Попробуйте Spring Framework. DAO инициализируются с помощью внедрения зависимостей и представляют собой обычные объекты Java.
Затем методы в DAO должны просто использовать объекты домена, которые используются на всех уровнях приложения.
Как загрузить DAO Factory для создания подключения к базе данных?
Что касается тестируемости, я бы не советовал второй подход. Статические методы не позволяют вам настраивать поведение класса путем переопределения соавторов с помощью имитаций и тому подобного. Как выразился Мишко Хевери: «Статические методы - смерть проверяемости».