У меня немного парадоксальный вопрос, но я постараюсь объяснить его как можно более содержательно.
Фон
У меня есть трехуровневая установка приложения, включающая Glassfish 3.1.2.2, JPA 2.0 (eclipse-link 2.3.3), базу данных MySQL и автономный Swing-Client. Я получаю доступ к EJB с помощью JNDI через удаленные интерфейсы. Более того, я использую статическое плетение, чтобы извлечь выгоду из ленивой загрузки сложных отношений. В автономном клиенте Swing я использую группы нагрузки для выборочной выборки только тех отношений, которые мне действительно нужны.
Цель
С целью уменьшения сетевого трафика я планирую преобразовать запрошенные аннотированные объекты базы данных @Entity в DTO (объекты передачи данных, POJO) с помощью этого картограф модели.
Большая проблема
Во время сопоставления @ Entity-Objects с соответствующими DTO осуществляется доступ к средствам доступа каждого поля в @Entity, что, в свою очередь, догоняет все невыбранные (ленивые загруженные косвенные списки) поля из базы данных, что приводит к большим снова объекты.
Моя цель - сопоставить ленивые аннотированные объекты @Entitiy такими, какие они есть, без извлечения намеренно невыбранных отношений, чтобы сохранить объекты как можно меньше, прежде чем они будут сериализованы и переданы удаленному клиенту.
Любые идеи ?
РЕДАКТИРОВАТЬ: я нашел этот поток от кого-то, кто использовал Dozer, я ищу нечто подобное для ModelMapper.
Что я пробовал (безуспешно):
- Я отсоединил результат запроса от диспетчера сущностей перед сопоставлением (все еще ленивая выборка)
- очистка и закрытие диспетчера сущностей после запроса и перед сопоставлением DTO (все еще ленивая выборка)
- объявление запрошенного списка окончательным (чтобы механизм ленивой загрузки не мог
переопределить атрибуты, которые были извлечены позже, но это было так)
Заранее большое спасибо за вашу помощь!