2013-05-05 4 views
2

Я использовал, чтобы читать кодирование наилучшей практикой является субъектом спящего режима не должен осуществлятьEntity зимует реализовать сериализованную

java.io.Serializable

.

Моя идея только для лучшей производительности, чтобы компилятор не обрабатывал что-то для объекта. И мы должны использовать сериализацию DTO для обмена клиентом и сервером.

Правильно ли это?

Большое спасибо!

ответ

0

Это не лучшая практика, и внедрение сериализуемых или не оказывает никакого влияния на производительность. Если вы хотите, чтобы иметь возможность сериализовать ваши сущности, сделайте их реализацией Serializable. Если вы этого не хотите, не делайте для них реализацию Serializable. Это так просто.

Использование DTO, когда сам объект содержит адекватную информацию, скорее рассматривается как анти-шаблон, чем рассматривается как лучшая практика.

+0

Этот ответ неправильный. Операции Hibernate POJO не являются сериализуемыми. См. Мой ответ ниже. – Johanna

0

HIBNNATE POJO не являются сериализуемыми. Это не вопрос лучшей практики или производительности. Это просто не работает. Вот почему.

Вы не получите ошибок компилятора при объявлении POJO как сериализуемых. Но во время выполнения, когда вы пытаетесь сериализовать и десериализовать объекты, вы можете получить исключение.

Проблема возникает, например, при использовании GWT и вы отправляете данные между клиентом и сервером. Это не с помощью Hibernate POJO только потому, что они не могут быть сериализованы. См. description of GWT with Hibernate в главе «Почему объекты Hibernate не могут быть поняты, когда они достигают мира браузера» (чуть раньше середины страницы) для более подробного исключения.

+0

Просто потому, что HIBNATE POJO нельзя использовать с GWT, это не значит, что они не могут быть сериализованы. GWT - это особая среда, где Java-код компилируется в JavaScript и запускается в браузере. Обычные приложения, в которых клиент является Java-приложением, могут сериализовать HMI-серверы POJO просто отлично. Я работал над несколькими проектами, в которых серверы Hibernate POJO были сериализованы и отправлены по сети в приложение Swing. –

+0

GWT действительно _is_ особая среда, но это точно сериализация объектов Hibernate, которая не работает. Вот почему общая рекомендация не выполнять Serializable верна и почему я не согласен с вашим ответом. Когда класс реализует Serializable, он должен работать всегда, а не только иногда. – Johanna

+0

Это не работает, потому что поддержка GWT для Java ограничена. Даже несериализуемые классы несовместимы с GWT. Даже некоторые классы Guava от Google несовместимы с GWT, от Google. Сериализация Java Hibernate POJO всегда работает нормально. GWT - это не Java. –

Смежные вопросы