SPRING-SOURCE.RU

Требования к объектам домена

Чтобы JPA мог нормально работать, так как не каждый объект может быть сохранен в базу данных, нужно следить за следующими требованиями:

  1. POJO или JavaBean объект
  2. Класс должен быть не final, то есть его никто не должен наследовать
  3. Наличие конструктора по умолчанию (без параметров)
  4. Implements Serializable, чтобы объекты могли храниться в кэше, в сериализованном виде
  5. Наличие полей идентификации, то есть ни один объект не может сохраняться в БД, если у него нет primary key.
  6. Атрибуты – коллекции обязательно объявлены в терминах интерфейсов коллекции, а не конкретных реализаций. Если используются какие-либо списки, наборы, map-ы, они должны быть классами List, Map, Set итд., то есть должны соответствовать интерфейсам из Java Collection. JPA и hibernate следят за коллекциями.
  7. В getters необходимо возвращать конкретно ссылку на коллекцию, а не ее копию (не создавать новые коллекции). Поэтому не рекомендуется использовать Array, так как когда мы возвращаем массив надо всегда делать copy, чтобы кто-то извне не мог если изменить. Также от массива сложно наследоваться.