Я недавно натыкался на этот шаблон (?) в нашем коде и задающийся вопросом, как это полезно, если вообще. У нас есть приложение Spring и использование фронтенда Flex BlazeDS. Было решено, чтобы мы использовали интерфейсы на нашем DTOs, как так:
Java
public interface ISomeDTO {
Integer setId();
void getId(Integer i);
}
public class SomeDTO implements ISomeDTO
{
..
}
Actionscript
public interface ISomeDTO {
var id:Integer;
}
public class SomeDTO implements ISomeDTO
{
..
}
Что делает интерфейс на усилении DTO Вы? Это легкие объекты с абсолютно нулевой логикой. DTOs имеют смысл, интерфейсы имеют смысл, но не вместе.
Я не понимаю, почему интерфейсы и Dто не будут работать вместе.
Рассмотрим завод / ассемблер, который создает доменные объекты из DTO. Вы можете настроить завод с стратегиями, чтобы он мог создавать определенные реализации объекта домена на основе типа DTO, который он дан. Dто в идеале будет набран в интерфейс здесь. (Это работает в противоположном направлении).
Я не говорю, что вы должны поставить каждый DTO за интерфейсом, но так же, как и с доменными объектами, наверняка будет случаев, когда это полезно для этого.
в среде на основе транзакций DTOS используются для разделения объектов базы данных из базовой сессии БД.
Эти сеансы обычно недоступны, и большинство сущностей состоят из прокси, которые лениво нагружаются коллекции участников. Поэтому, если вы должны были получить доступ к имуществу коллекции на прокси-объекте, прокси загружает коллекцию на данный момент времени, что существует транзакция базы данных или нет. Таким образом, доступ члена субъекта может появиться неисправность, когда нет активной транзакции.
Именно это происходит, когда вы отправляете свои объекты на вид, который пытается получить доступ к участнику. Поскольку обработка транзакций обычно определяется в сервисном слое, в представлении / контроллере нет активной транзакции.
Обведите курсивом этой проблемы, существуют разные подходы:
, надеюсь, это помогло.