|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Меня на работе попросили сделать так, чтобы мои спринг mvc DTO имплементили Serializable, да ещё и чтобы SerialVersionUid там был. На мой вопрос зачем я получил ответ, что это best practice. Объясните мне это лажа какая-то или правда есть какое-то разумное объяснение этому. У нас очень cтандартная трёхзвенка. DTO используем для того, чтобы собрать что-то в базе, переложить в DTO и по http отправить на FE. И чтобы принять с FE ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 22:54 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Ты не объяснил чем именно это тебя не устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 23:02 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Blazkowicz, Меня просят сделать DTO Serializable и добавить serialVersionUid. Я не понимаю зачем. Нет желания писать лишний код, который никому не нужен. Хочу узнать есть ли на самом деле причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 23:11 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerBlazkowicz, Меня просят сделать DTO Serializable и добавить serialVersionUid. Я не понимаю зачем. Нет желания писать лишний код, который никому не нужен. Хочу узнать есть ли на самом деле причины. https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html Это требование интерфейса по определению авторThe serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an InvalidClassException. A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final, and of type long: ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 23:26 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
DTO нужен для передачи. Правильно? Для передачи его приходится сериализовать. Верно? Верно. Для сериализации нужно пометить интерфейсом. Логично? Логично. А версия нужна когда вы вдруг будете менять класс, а старая версия будет где-нибудь сериализована и сохранена. Возможно в очереди, возможно в БД, возможно ещё где. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 23:52 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Можно юзать scala, там всего лишь нужно добавить аннотацию @SerialVersionUID к классу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 00:16 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questioner, Если не любитель оверхеда и пересылка DTO --> JSON --js То кто мешает выйти на ошибку и показать её тут. Или работает без интерфейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 08:21 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Petro123questioner, Если не любитель оверхеда и пересылка DTO --> JSON --js То кто мешает выйти на ошибку и показать её тут. Или работает без интерфейса? Работает без интерфейса jackson никакого отношения к Serializable не имеет Serializable это java сериализация ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 09:57 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerРаботает без интерфейса Где-то работает, где-то нет. questionerjackson никакого отношения к Serializable не имеет Serializable это java сериализация Во-первых это слегко заблуждение. Во-вторых никогда не знаешь когда вдруг понадобится сериализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 10:15 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
авторBlazkowiczquestionerРаботает без интерфейса Где-то работает, где-то нет. А давайте поподробнее? questionerjackson никакого отношения к Serializable не имеет Serializable это java сериализация Во-первых это слегко заблуждение. Во-вторых никогда не знаешь когда вдруг понадобится сериализовать. Почему бы не дождаться когда понадобится и тогда сделать Serializable? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 10:46 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerавторпропущено... А давайте поподробнее? пропущено... Во-первых это слегко заблуждение. Во-вторых никогда не знаешь когда вдруг понадобится сериализовать. Почему бы не дождаться когда понадобится и тогда сделать Serializable? в runtime на production ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 11:11 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
llemingв runtime на production ?а там другой юз кейс при тестах? Я к тому что всё таки надо знать где упадет. А не ....где то может упасть... Мое имхо, что это нужно для толстых клиентов. Но могу ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 11:21 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
llemingquestionerпропущено... Почему бы не дождаться когда понадобится и тогда сделать Serializable? в runtime на production ? Ммм.... вас просят добавлять фичи в рантайм на продакшн минуя все остальные фазы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 11:35 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerllemingпропущено... в runtime на production ? Ммм.... вас просят добавлять фичи в рантайм на продакшн минуя все остальные фазы? тогда что значит термин подождать ? Тесты это в идеале и не всегда все покрывают. Идеальные тесты это тесты на продакшн они кейсы в абсолюте покрывают. Вот спецификация сервлетов тоже предполагает что объекты в session должны быть serializable чтобы сессию можно было размазать по кластеру или восстановить после рестарта. Механизм реализации возложен на application server и в зависимости от реализации если эти объекты не seriazable то можно удивиться что один war на разных серверах время от времени ведет себя странно. Где-то работает, где-то нет. Обновили сервер перестало работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 12:01 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerПочему бы не дождаться когда понадобится и тогда сделать Serializable? Ну, в теории, может быть уже поздно, так как выполучите DTO несовместимых версий и не будете готовы к этому. На практике, конечно же, это нужно далеко не всегда. И аккуратное внедрение только совместимых изменений в персистентные классы - тоже решение для небольшой команды. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 12:05 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
BlazkowiczquestionerПочему бы не дождаться когда понадобится и тогда сделать Serializable? Ну, в теории, может быть уже поздно, так как выполучите DTO несовместимых версий и не будете готовы к этому. На практике, конечно же, это нужно далеко не всегда. И аккуратное внедрение только совместимых изменений в персистентные классы - тоже решение для небольшой команды. Мы можем получить ДТО несовместимых версий если мы эти ДТО где-то сохраняем в виде байтов через java сериализацию ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 12:52 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questionerМы можем получить ДТО несовместимых версий если мы эти ДТО где-то сохраняем в виде байтов через java сериализацию ? Даже если вы их сохраняете не через Java сериализацию, вы можете получить несовместимые версии. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 12:59 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questioner, Версия вам самим удобна. Чтобы диагностировать проблемы. Например, клиент js Ослик или по REST android пол года не запускался и вы поменяли метод в классе. Тогда при райзе проверить версию или на входе парсера проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 13:32 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
questioner...cтандартная трёхзвенка....Serializable.... AFAIK Кластерный софт использует Serializable что бы объекты между машинами в кластере перетаскивать, если одна из машин сломается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 13:34 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
BlazkowiczА версия нужна когда вы вдруг будете менять класс, а старая версия будет где-нибудь сериализована и сохранена. Возможно в очереди, возможно в БД, возможно ещё где.Там на самом деле с Serializable все довольно печально, указание serialVersionUID спасает только от того, что без него изменения в методах приводят к java.io.InvalidClassException, а с ним методы можно менять спокойно. А вот при изменении полей нужно следить за тем чтобы serialVersionUID тоже менялся, чтобы как раз ловить java.io.InvalidClassException, а не получать на выходе какую-то фигню - в случае DTO польза довольно сомнительная: методов там и так нет, кроме геттеров и сеттеров, поэтому, исходя из конвенции, там всегда будет java.io.InvalidClassException с одной лишь разницей: по serialVersionUID можно в СКВ поискать и узнать почему нестыковка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 13:59 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Ну дак оно везде так для версионости. Что в ОРМ, что руками добавлю поле версия="1.2.5" Будет исключение и далее хотим разбираемся, хотим на экран. А в DTO смену типа данных, новый тип или пропал старый разве не ловит? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 14:45 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevquestioner...cтандартная трёхзвенка....Serializable.... AFAIK Кластерный софт использует Serializable что бы объекты между машинами в кластере перетаскивать, если одна из машин сломается. А мне мой (в свое время) вновь обретенный рук. проекта на это (ПРО СЕРИАЛИЗАЦИЮ, ТАМ ТОЖЕ ПО СПЕЦИФИКАЦИИ ТРЕБУЕТСЯ. ) сказал что у нас не будет миграции по нодам, вся сессия только на одной ноде. А вот про возможность пассивации бинов (ADF) при высокой нагрузке он даже не подозревал. И такую ситуацию (пассивации) смоделировать в тестах просто невозможно, нужно специальное нагрузочное тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 15:12 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
ПылинкаLeonid Kudryavtsevпропущено... AFAIK Кластерный софт использует Serializable что бы объекты между машинами в кластере перетаскивать, если одна из машин сломается. А мне мой (в свое время) вновь обретенный рук. проекта на это (ПРО СЕРИАЛИЗАЦИЮ, ТАМ ТОЖЕ ПО СПЕЦИФИКАЦИИ ТРЕБУЕТСЯ. ) сказал что у нас не будет миграции по нодам, вся сессия только на одной ноде. А вот про возможность пассивации бинов (ADF) при высокой нагрузке он даже не подозревал. И такую ситуацию (пассивации) смоделировать в тестах просто невозможно, нужно специальное нагрузочное тестирование. Я думаю я не один такой, кто до этого ни о какой пассивации не слышал. Может конечно есть более привычный англоязычный аналог ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 15:29 |
|
А вы spring mvc DTO делаете implements Serializable?
|
|||
---|---|---|---|
#18+
по большому счету суид нужен только если ты сериализуешь чонить родным джавасериализатором. ну да вдруг ты класс переименуешь и оно у тебя назад десериализовываться уже не захочет. или там поле добавишь или еще что. а подставишь тот же суид вроде оно заработать должно )) наверное. если полей не добавил. вообще это старьё какое то. дтохи которые отдаешь клиенту через хттп и контроллер ты навряд ли будешь когда-либо сериализовывать и хранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 12:18 |
|
|
start [/forum/topic.php?fid=59&fpage=40&tid=2121799]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 140ms |
0 / 0 |