Классы POJO сериализуются без использования чтения / записи - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в SPRING и был назначен для работы над проектом, находящимся в стадии разработки. К сожалению, разработка проекта шла медленно, поэтому люди приходили и уходили, поэтому я не могу спросить их, почему некоторые вещи были сделаны определенным образом.

Проект представляет собой веб-сервис, использующий SPRING.

Они используют View - Controller - Service (интерфейс и реализация) - DAO (интерфейс и реализация) - POJO (класс, используемый для передачи структуры данных по уровням).

В каждом POJO я проверял сериализацию реализаций. При ближайшем рассмотрении и поиске кода ни одно из POJO никогда не пишется и не читается ни в самом POJO, ни в каком-либо другом файле. Что заставило меня спросить, почему это делается.

POJO заполняются из операторов Oracle в DAO, которые всплывают в представление, а затем возвращаются обратно в DAO, где информация от них записывается в базу данных с использованием операторов Oracle. Само POJO не записывается в базу данных.

Требуется ли сериализация SPRING MVC или Java-приложениям, и они используются в фоновом режиме? Нужно ли передавать данные между сервером и клиентом? Есть ли веская причина, по которой все POJO используют его, что кто-то новый не узнает?

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Зависит от технологий, используемых в слоях, а также от деталей реализации.

Если сохранение выполняется с использованием JPA / Hibernate, то POJO, скорее всего, должны быть сериализуемыми.

В случае, если POJO передается для просмотра через сеанс сервлета, и репликация сеанса включена, вам нужно, чтобы ваши POJO были Serializable.

0 голосов
/ 08 ноября 2018

Возможно, это не правильный ответ, но в моем случае это соответствует и объясняет то, что я вижу. Я не видел, чтобы эта информация упоминалась где-то еще, но за ответ хорошо проголосовали, он уже давно и пользуется высокой репутацией, поэтому я склонен доверять ему.

Существует ответ на другой вопрос, в котором упоминается что-то важное.

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

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

0 голосов
/ 07 ноября 2018

Использование Java сериализации по умолчанию является обычным способом для обычных POJO.

Java определяет способ сериализации объектов по умолчанию. Классы Java могут переопределить это поведение по умолчанию. Пользовательская сериализация может быть особенно полезна при попытке сериализации объекта, который имеет некоторые не сериализуемые атрибуты.

...