Sergey
но практика показывает что такой подход говно
fink3L
а чем тебе геттеры не нравится?)
Sergey
ну... тем что ты приоткрываешь доступ к состоянию объекта
Sergey
смотри, если тебе надо достать кусочек стэйта сущности и сделать с ней что-то, вероятно код который это что-то делает должен лежать прямо в сущности
Sergey
а если тебе надо в 10-ти местах достать этот кусочек сущности - значит что-то явно пошло не так и этот кусочек в этой сущности лежать не должен
Sergey
данные должны лежать максимально рядом с кодом, который эти данные обрабатывает
Sergey
с другой стороны есть toId(), когда тебе надо заменить цельную сущность на кусочек и работать только с ним. Например - использовать как идентификатор для выборки
Sergey
это уже другое, ты используешь эти данные а не обрабатываешь
Alex
Оверенженеринг какой-то. Пример можно, как ты вынесешь данные из сущности и будешь хранить их там где надо?
Alex
Или пример всё тот же, список продуктов?
Alex
И сущность у нас продукт.
Sergey
может через пару неделек будет
Alex
Что за соседний?
Sergey
prophp7
Alex
А почему 7? Неужели для каждой версии по чатику.
Sergey
А почему 7? Неужели для каждой версии по чатику.
да нет, просто другие имена заняты были)
Sergey
это люди переехавшие из gitter чата
Sergey
короч мы подумали сделать мини интернет магазинчик по продаже книг
Sergey
и на нем обкатывать идеи
Sergey
спорить и накидывать изменения требований что бы ломать все хорошие ранее идеи
Sergey
эдакий проект-упражнение
Viktor
а что такого глобально плохого в грамотном использовании ORM? тот же гибер+критерия
Viktor
ну будем оно все подниматься дольше, да пофиг
Viktor
запросы будут генериться адекватные
Sergey
а что такого глобально плохого в грамотном использовании ORM? тот же гибер+критерия
вопрос в гидрациях. Если ты будешь результат гидрировать сразу на DTO - то все збс
Sergey
а если сначала на сущности а потом возиться с DTO
Sergey
ну такое...
Viktor
я буду отдавать объект в jsonчике и радоваться что я не фронтэндщик
Viktor
ну они ангуляром каким-нибудь это все разбирают уже, хз
Sergey
а как ты сущности в json превратишь?
Sergey
автомэппером каким?
Sergey
а если в сущности 10 полей, и они тебе нужны все... но на фронтэнде нужны только 4
Sergey
или еще веселее
Sergey
тебе надо список комментов и имя автора, только его имя
Sergey
ты будешь отдавать вместе со связанной сущностью юзера?
Viktor
а как ты сущности в json превратишь?
это ну ОЧЕНЬ легкая задача)
Sergey
это ну ОЧЕНЬ легкая задача)
я привел тебе два кейса
Sergey
реши их "легко"
Sergey
то есть твой json будет содержать все данные а они сами разберутся?
Sergey
так?
Viktor
и кстати такое тоже
Viktor
тебе надо список комментов и имя автора, только его имя
Viktor
ты будешь отдавать вместе со связанной сущностью юзера?
Viktor
нет, наоборот
Viktor
мой json будет содержать только то, что должен содержать мой json
Sergey
как?
Viktor
@JsonIgnore
Sergey
окей, в одном респонсе тебе это поле не нужно, а в другом нужно
Sergey
группы7
Sergey
или другой кейс
Sergey
две версии API
Sergey
V1: { "foo": 1 } V2: { "foo": [1, 2, 3] }
Sergey
реши легко
Viktor
я бы указал при маппинге конкретный список полей, гугл еще говорит что есть jacksonMixIn
Viktor
окей, в одном респонсе тебе это поле не нужно, а в другом нужно
Sergey
мол раньше могла быть только одна штука, теперь много штук
Sergey
а теперь вопрос - а разве не проще тупо взять из базы то что надо?
Sergey
1. быстрее будет работать, 2. Меньше магии 3. проще в поддержке
Viktor
отказаться от задачи на этапе проектирования... два апи - две программы и идите в лес
Viktor
или другой кейс
Viktor
две версии API
Viktor
ну я не люблю в приложении в котором больше трех сущностей, трех связей и 15 полей таскать чистый SQL
Viktor
а теперь вопрос - а разве не проще тупо взять из базы то что надо?
Sergey
4. сущности ничего не знают о UI (аннотации хоть и являются мета информацией - это все же смешение ответственности)
Viktor
что чистый SQL знает о UI? )))) :D
Viktor
4. сущности ничего не знают о UI (аннотации хоть и являются мета информацией - это все же смешение ответственности)
Viktor
проще в поддержке ORM, пока оно не начинает генерить дебильные запросы
Viktor
1. быстрее будет работать, 2. Меньше магии 3. проще в поддержке
Viktor
тут уже начинаются namedQuery и по сути тот же SQL, что отстойно... поэтому мне нравится пока criteria
Sergey
http://projects.spring.io/spring-data-rest/
Viktor
один раз разобрался и написал, потом изи что-то добавляешь и переделываешь, даже если кардинально
Sergey
мне вот эта концепция нравится, если применительно к java
Sergey
тупо строишь read модель поверх твоего приложения под те UI которые нужны и не паришься
Sergey
потому что если у тебя операции чтения и записи работают с одними и теми же структурами - ну такое... представление данных для чтения может сильно отличаться от того, что удобно для записи
Sergey
если доводить до крайности - event sourcing
Viktor
ну я также и делаю с гибером
Viktor
тупо строишь read модель поверх твоего приложения под те UI которые нужны и не паришься
Sergey
ну я также и делаю с гибером
но ты же сказал что будешь сущности пхать во вью а то json сгенерит