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