
Sergey
18.12.2016
15:28:34
ну то есть либо у тебя в сущностях будет код который нужен только для view layer либо ты просто будешь получать уже готовые данные которые будешь кидать в json

finkel
18.12.2016
15:28:44
не понимаю что за геттеры) ну в смысле, доступ к данным объекта? getId...

Sergey
18.12.2016
15:28:56

finkel
18.12.2016
15:28:58
или что?)

Google

Sergey
18.12.2016
15:29:19
ну то есть все данные приватны, никакого способа до них добраться сейчас нет (потому что для операций записи они не нужны)

finkel
18.12.2016
15:29:20

Sergey
18.12.2016
15:29:29

finkel
18.12.2016
15:29:35
сущности

Sergey
18.12.2016
15:29:39
сущности без геттеров?)

finkel
18.12.2016
15:29:47
угу
или у тебя исключительно сеттеры?)

Sergey
18.12.2016
15:30:12
ну вот... мы чуть раньше обсуждали что "объект" это такая штука, которая хранит данные и их обрабатывает. А вместо того что бы гонять данные между объектами мы шлем сообщения "сделай то-то то-то"
> или у тебя исключительно сеттеры?)
нет ни сеттеров (привычных в духе setSomething) ни геттеров
есть методы с поведением
ООП же
класс тупо из геттеров и сеттеров - это как структура данных.
это не объект

Google

Sergey
18.12.2016
15:31:11
там нет инкапсуляции

finkel
18.12.2016
15:31:14
я ооп то не знаю, пишу процедуры в классы обернутые, пришел к вам, научится)

Sergey
18.12.2016
15:31:25
а ну вот тип того
короч предположим что геттеры и сеттеры не нужны
вообще
например если тебе надо получить id сущности вместо getId() ты пишешь toId()
метод который сконвертирует объект в другую хрень - ее айдишник

finkel
18.12.2016
15:32:31
угу

Sergey
18.12.2016
15:32:38
другая семантика, хотя по коду будет казаться что одно и то же

finkel
18.12.2016
15:32:51
у тебя будет toJson

Sergey
18.12.2016
15:33:27
это один из вариантов как не делать геттеры)
и честно - я им пользуюсь
только toArray а не toJson
но практика показывает что такой подход говно

finkel
18.12.2016
15:34:09
а чем тебе геттеры не нравится?)

Sergey
18.12.2016
15:34:22
ну... тем что ты приоткрываешь доступ к состоянию объекта
смотри, если тебе надо достать кусочек стэйта сущности и сделать с ней что-то, вероятно код который это что-то делает должен лежать прямо в сущности
а если тебе надо в 10-ти местах достать этот кусочек сущности - значит что-то явно пошло не так и этот кусочек в этой сущности лежать не должен
данные должны лежать максимально рядом с кодом, который эти данные обрабатывает
с другой стороны есть toId(), когда тебе надо заменить цельную сущность на кусочек и работать только с ним. Например - использовать как идентификатор для выборки

Google

Sergey
18.12.2016
15:36:26
это уже другое, ты используешь эти данные а не обрабатываешь

Aliaksandr
18.12.2016
15:36:28
Оверенженеринг какой-то. Пример можно, как ты вынесешь данные из сущности и будешь хранить их там где надо?
Или пример всё тот же, список продуктов?
И сущность у нас продукт.

Sergey
18.12.2016
15:36:52
может через пару неделек будет

Aliaksandr
18.12.2016
15:37:05
Что за соседний?

Sergey
18.12.2016
15:37:12
prophp7

Aliaksandr
18.12.2016
15:37:35
А почему 7? Неужели для каждой версии по чатику.

Sergey
18.12.2016
15:38:27
это люди переехавшие из gitter чата
короч мы подумали сделать мини интернет магазинчик по продаже книг
и на нем обкатывать идеи
спорить и накидывать изменения требований что бы ломать все хорошие ранее идеи
эдакий проект-упражнение

Victor
18.12.2016
17:27:55
а что такого глобально плохого в грамотном использовании ORM? тот же гибер+критерия
ну будем оно все подниматься дольше, да пофиг
запросы будут генериться адекватные

Sergey
18.12.2016
17:29:33
а если сначала на сущности а потом возиться с DTO

Google

Sergey
18.12.2016
17:29:48
ну такое...

Victor
18.12.2016
17:31:12
я буду отдавать объект в jsonчике и радоваться что я не фронтэндщик
ну они ангуляром каким-нибудь это все разбирают уже, хз

Sergey
18.12.2016
17:31:58
а как ты сущности в json превратишь?
автомэппером каким?
а если в сущности 10 полей, и они тебе нужны все... но на фронтэнде нужны только 4
или еще веселее
тебе надо список комментов и имя автора, только его имя
ты будешь отдавать вместе со связанной сущностью юзера?

Victor
18.12.2016
17:32:48

Sergey
18.12.2016
17:33:00
реши их "легко"

Victor
18.12.2016
17:33:27

Sergey
18.12.2016
17:33:42
то есть твой json будет содержать все данные а они сами разберутся?
так?

Victor
18.12.2016
17:33:48
и кстати такое тоже
тебе надо список комментов и имя автора, только его имя
ты будешь отдавать вместе со связанной сущностью юзера?
нет, наоборот
мой json будет содержать только то, что должен содержать мой json

Google

Sergey
18.12.2016
17:34:08
как?

Victor
18.12.2016
17:34:20
@JsonIgnore

Sergey
18.12.2016
17:34:55
окей, в одном респонсе тебе это поле не нужно, а в другом нужно
группы7
или другой кейс
две версии API
V1:
{
"foo": 1
}
V2:
{
"foo": [1, 2, 3]
}
реши легко

Victor
18.12.2016
17:36:27
я бы указал при маппинге конкретный список полей, гугл еще говорит что есть jacksonMixIn
окей, в одном респонсе тебе это поле не нужно, а в другом нужно

Sergey
18.12.2016
17:36:28
мол раньше могла быть только одна штука, теперь много штук
а теперь вопрос - а разве не проще тупо взять из базы то что надо?
1. быстрее будет работать,
2. Меньше магии
3. проще в поддержке

Victor
18.12.2016
17:37:32
отказаться от задачи на этапе проектирования... два апи - две программы и идите в лес
или другой кейс
две версии API
ну я не люблю в приложении в котором больше трех сущностей, трех связей и 15 полей таскать чистый SQL
а теперь вопрос - а разве не проще тупо взять из базы то что надо?

Sergey
18.12.2016
17:38:17
4. сущности ничего не знают о UI (аннотации хоть и являются мета информацией - это все же смешение ответственности)

Victor
18.12.2016
17:38:41
что чистый SQL знает о UI? )))) :D
4. сущности ничего не знают о UI (аннотации хоть и являются мета информацией - это все же смешение ответственности)