Size: a a a

2020 November 05

P

Pan Kotek in pro.jvm
Но это такой себе вариант
источник

D

Dima in pro.jvm
потому что query dsl все равно полностью самому писать
источник

D

Dima in pro.jvm
а хотелось бы findlAll(EntityGraph graph);
источник

AE

Alexandr Emelyanov in pro.jvm
Dima
твой совет был верный про query dsl
Я помню времена до спринг дата, когда у нас были дао, а внутри полный контроль на querydsl, иногда до сих пор так делаем
источник

AE

Alexandr Emelyanov in pro.jvm
Dima
потому что query dsl все равно полностью самому писать
Да, и ещё фетчи руками расставлять
источник

A

Alex in pro.jvm
Понятно. Тогда вот так остается делать
источник

A

Alex in pro.jvm
источник

A

Alex in pro.jvm
@Repository
public class CustomerRepositoryImpl implements BaseRepository<Customer, Integer> {

   @PersistenceContext
   private EntityManager entityManager;

   @Override
   public Customer findWithGraph(Integer id, String graphName) {

       EntityGraph entityGraph = entityManager.getEntityGraph(graphName);
       Map<String, Object> properties = new HashMap<>();
       properties.put("javax.persistence.fetchgraph", entityGraph);
       Customer customer = entityManager.find(Customer.class, id, properties);

       return customer;
   }
}
источник

AE

Alexandr Emelyanov in pro.jvm
Alex
@Repository
public class CustomerRepositoryImpl implements BaseRepository<Customer, Integer> {

   @PersistenceContext
   private EntityManager entityManager;

   @Override
   public Customer findWithGraph(Integer id, String graphName) {

       EntityGraph entityGraph = entityManager.getEntityGraph(graphName);
       Map<String, Object> properties = new HashMap<>();
       properties.put("javax.persistence.fetchgraph", entityGraph);
       Customer customer = entityManager.find(Customer.class, id, properties);

       return customer;
   }
}
Ничего плохого, как деды завещали.
источник

AE

Alexandr Emelyanov in pro.jvm
Ты же спрячешь это за интерфейс?)
источник

A

Alex in pro.jvm
Так то да )
источник

РН

Роман Нагаев... in pro.jvm
Alex
Добрый вечер. Подскажите пожалуйста можно ли в Spring получать результаты выполнения методов Repository используя динамические Entity Graph ?
можно но нужно будет расширить жпашный репозиторий
https://www.baeldung.com/jpa-entity-graph#2-defining-an-entity-graph-with-the-jpa-api

если используешь hibernate возможно стоит посмотреть в сторону FetchProfile, там вроде как можно сделать жадные связи через select не трогая сущности, но статически и я сам не пробовал
источник
2020 November 06

A

Alex in pro.jvm
Всем привет 👋🏻
Есть вопрос связанный с сериализацией сущностей. Кто и ка делает? Например у нас есть сущность Client. И фронт одном случае (например страница редактирования) запрашивает больше данных а в другом (страница списка) меньше. Можно ли в ответе отдавать сущность их БД но при этом указать что только те поля которые на данный момент считаны из бд (с использованием Entity Graph) должны сериализоваться? Получается мы просто для разных запросов сущности указываем разные графы и при сериализации на фронт отдается все что нужно. Просто я знаю что Gson например начинает обращаться ко всем полям и hibernate из начинает доставать из БД что приводит к stack overflow. Хочется создавать поменьше DTO (pojo) для фронта и не заниматься постоянным маппингом ))
источник

DC

Denis Chikanov in pro.jvm
Alex
Всем привет 👋🏻
Есть вопрос связанный с сериализацией сущностей. Кто и ка делает? Например у нас есть сущность Client. И фронт одном случае (например страница редактирования) запрашивает больше данных а в другом (страница списка) меньше. Можно ли в ответе отдавать сущность их БД но при этом указать что только те поля которые на данный момент считаны из бд (с использованием Entity Graph) должны сериализоваться? Получается мы просто для разных запросов сущности указываем разные графы и при сериализации на фронт отдается все что нужно. Просто я знаю что Gson например начинает обращаться ко всем полям и hibernate из начинает доставать из БД что приводит к stack overflow. Хочется создавать поменьше DTO (pojo) для фронта и не заниматься постоянным маппингом ))
>Хочется создавать поменьше DTO (pojo) для фронта и не заниматься постоянным маппингом ))
Не на том экономите, ох не на том
источник

A

Alex in pro.jvm
Лучшая практика создавать DTO? Сейчас опыта мало, хочется выбрать правильный путь и не переделывать )
источник

A

A in pro.jvm
Можно какой-нибудь mapstruct использовать, чтобы проще было мапить.
ИМХО, домен лучше отделять от представления
источник

D

Dima in pro.jvm
Alex
Всем привет 👋🏻
Есть вопрос связанный с сериализацией сущностей. Кто и ка делает? Например у нас есть сущность Client. И фронт одном случае (например страница редактирования) запрашивает больше данных а в другом (страница списка) меньше. Можно ли в ответе отдавать сущность их БД но при этом указать что только те поля которые на данный момент считаны из бд (с использованием Entity Graph) должны сериализоваться? Получается мы просто для разных запросов сущности указываем разные графы и при сериализации на фронт отдается все что нужно. Просто я знаю что Gson например начинает обращаться ко всем полям и hibernate из начинает доставать из БД что приводит к stack overflow. Хочется создавать поменьше DTO (pojo) для фронта и не заниматься постоянным маппингом ))
делайте дто/датаклассы для нужного случая
источник

D

Dima in pro.jvm
JPA не должна протекать дальше дао/репозитория
источник

D

Dima in pro.jvm
простая и многолетняя аксиома
источник

A

Alex in pro.jvm
A
Можно какой-нибудь mapstruct использовать, чтобы проще было мапить.
ИМХО, домен лучше отделять от представления
Да MapStruct помогает )
источник