Насколько я понимаю. Для №1 Поток объекта после сериализации состоит в основном из 5 частей:
- Заголовок для утверждения, что это сериализованный файл и версия сериализации.
- Информация о классе, такая как имя, идентификатор сериализации (serialVersionUID), количество полей и т. Д. c.
- Описание полей
- Информация о родительском классе
- Значение полей.
Проверьте эти коды из ObjectOutputStream:
if (obj instanceof String) {
writeString((String) obj, unshared);
} else if (cl.isArray()) {
writeArray(obj, desc, unshared);
} else if (obj instanceof Enum) {
writeEnum((Enum<?>) obj, desc, unshared);
} else if (obj instanceof Serializable) {
writeOrdinaryObject(obj, desc, unshared);
} else {
if (extendedDebugInfo) {
throw new NotSerializableException(
cl.getName() + "\n" + debugInfoStack.toString());
} else {
throw new NotSerializableException(cl.getName());
}
Для # 2 я думаю, что hibernate / jpa просто записывает их в базу данных по запросам, они не нужны для сериализации объекта. Вы можете внедрить объект с помощью Serializable, если вам нужно передать, а затем перекрестные JVM или другое использование (я думаю, вам лучше иметь сериализацию в веб-приложении).