Я разрабатываю Java-приложение с 4 уровня: база данных (MySQL), постоянство (JPA), бизнес (POJO, аналогичные сессионным компонентам без состояния в EJB), презентация (Java Swing).Как отправить данные из сессионных компонентов в уровень представления?
Я решил полностью разделить презентации и уровни устойчивости. Таким образом, все изменения ко всем данным производятся через бизнес-уровень. Таким образом, уровень представления даже не знает, существуют ли классы сущностей. Это также позволяет сеансовому компоненту лучше контролировать переданные данные, потому что иногда сеансовому компоненту необходимо до проверять или преобразовывать значения, полученные из презентации, перед изменением сущностей.
Однако иногда сеансовому компоненту необходимо отправить большое количество информации (например, список объектов с большим количеством свойств) вызывающему абоненту. И это усложняется, потому что в соответствии с проектом, который я принял, bean-сессию необходимо развернуть все эти объекты во что-то еще. Я попытался преобразовать список объектов в список массивов (где каждый член массива соответствует свойству в сущности), но это кажется настолько ошибочным, подверженным ошибкам и неэффективным для меня.
Что было бы правильным способом отправить данные в презентацию? Означает ли смысл скрывать сущности за сессионными бобами? Какова общая схема в таких приложениях?
Одной из проблем с отправкой объектов JPA удаленному клиенту является то, что вы отправляете также технические ПК, а не только бизнес-ключи. Особенно, если пользователю разрешено обновлять данные, вы должны убедиться, что правильные PK используются (не обрабатываются) при повторном подключении объектов. DTO делают эту проблему более ясной, только отправляя данные, которые нужны пользователю (что может включать бизнес-ключи, но не суррогатные ПК). – Puce
И что мешает им манипулировать бизнес-ключами? Я не вижу здесь никакой разницы. Кстати, есть много компаний, которые не имеют бизнес-ключа. –
Что такое ПК? Будет ли отдельный объект быть хорошим DTO? – SkyDan