Должны ли классы таблицы Hibernate быть Сериализуемыми?

я унаследовал проект Websphere Portal, который использует Hibernate 3.0 для подключения к базе данных SQL Server.

в этом проекте есть около 130 классов таблиц Hibernate. Все они реализуют сериализуемые. Ни один из них не объявляет поле serialVersionUID, поэтому Eclipse IDE показывает предупреждение для всех этих классов.

существует ли какая-либо фактическая необходимость в реализации Сериализуемых этих классов?
Если да, то есть ли инструмент для добавления сгенерированного поля serialVersionUID на большое количество классов сразу (просто чтобы предупреждения исчезли) ?

5 ответов


существует ли какая-либо фактическая необходимость в реализации Сериализуемых этих классов?

спецификация JPA (JSR 220) суммирует ее довольно хорошо (то же самое относится к Hibernate):

2.1 требования к классу сущностей

(...)

Если экземпляр сущности должен быть передан по значению, как отдельный объект (например, через удаленный интерфейс), класс сущности должен реализовать Serializable взаимодействие.

таким образом, строго говоря, это не является требованием, Если вам не нужно, чтобы отдельные объекты были отправлены по проводу на другой уровень, перенесены на другой узел кластера, сохранены в сеансе HTTP и т. д.

Если да, есть ли какой-либо инструмент для добавления сгенерированного поля serialVersionUID в большое количество классов сразу

Я думаю, что вы могли бы пакет с задачи серийной версии (Ant).


Hibernate не требует сериализации вообще.


в Eclipse "Очистить команда" может сделать это. Однако он также делает намного больше, чтобы проверить его и уточнить настройки очистки и формата перед использованием его на весь пакет.


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

Если вы механически делаете это с Eclipse, это не должно занять у вас больше 4-5 секунд на класс, который все равно может быть быстрее, чем скрипт.


если да, есть ли какой-либо инструмент для добавления сгенерированного поля serialVersionUID в большое количество классов сразу (просто чтобы убрать предупреждения) ?

вы можете отключить это предупреждение в настройках компилятора для Eclipse - либо для проекта, либо для рабочей области в целом.