Должны ли классы таблицы Hibernate быть сериализуемыми? - PullRequest
44 голосов
/ 28 апреля 2010

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

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

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

Ответы [ 5 ]

57 голосов
/ 28 апреля 2010

Есть ли реальная потребность в этих классах для реализации Serializable?

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

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

(...)

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

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

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

Я думаю, что вы можете сделать это с помощью задач Serial version (Ant) .

6 голосов
/ 28 апреля 2010

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

5 голосов
/ 28 апреля 2010

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

2 голосов
/ 28 апреля 2010

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

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

2 голосов
/ 28 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...