Когда и почему сущности JPA должны реализовывать интерфейс Serializable? - PullRequest
117 голосов
/ 07 января 2010

Вопрос в названии. Ниже я только что описал некоторые свои мысли и выводы.

Когда у меня была очень простая модель предметной области (3 таблицы без каких-либо отношений), все мои объекты НЕ реализовывали Serializable.

Но когда доменная модель стала более сложной, я получил RuntimeException, в котором говорилось, что один из моих объектов не реализовал Serializable.

Я использую Hibernate в качестве реализации JPA.

Интересно:

  1. Это специфичное для поставщика требование / поведение?
  2. Что происходит с моими сериализуемыми сущностями? Должны ли они быть сериализуемыми для хранения или передачи?
  3. В какой момент становится необходимым сделать мою сущность сериализуемой?

Ответы [ 12 ]

0 голосов
/ 05 июня 2018
  1. В какой момент становится необходимым сделать сериализованную мою сущность?

Для реализации ehcache с дисковым хранилищем в качестве кэша второго уровня (т. Е. С использованием аннотации @Cacheable для объекта или метода репозитория / службы) требуется Serializable, в противном случае кэшу не удастся (NotSerializableException) записать объект в кэш диска. *

0 голосов
/ 05 июня 2017

Это также ошибка, которая выдается, когда вы передаете неверно введенный идентификатор в качестве второго параметра чему-то вроде em.find () (т.е. передаете сам объект, а не его идентификатор). Я пока не счел необходимым на самом деле объявлять сущности JPA сериализуемыми - это на самом деле не нужно, если вы не используете referencedColumnName, как описано aman.

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