Подтвердить что ты не робот

Классы классов Hibernate должны быть Serializable?

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

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

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

4b9b3361

Ответ 1

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

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

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

(...)

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

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

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

Я думаю, что вы могли бы сделать это с помощью Последовательная версия (Ant) Задачи.

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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