jpa
.pdfТребования для доступа к свойствам
Свойства должны иметь методы get и set
Методы свойств должны быть public
или protected
Аннотируется только метод get
JPA-имплементация будет использовать эти методы
◦Бизнес-логика в аксессорах может привести к побочным эффектам
2-31
Требования для доступа к полям
Поля должны быть public, package или protected
Аннотируются поля
JPA-имплементация обеспечивает доступ к этим полям
Рекомендуется использовать доступ к полям
2-32
Идентификатор (ключ) сущности
Однозначно идентифицирует состояние сущности в БД
Может состоять из одного или
нескольких полей
Ссылки на другие сущности не могут быть ключами
Должен быть определен для старшего класса иерархии
2-33
Аннотации простого ключа
Аннотация @Id
По умолчанию ключ должен определяться приложением
@GeneratedValue
◦ Параметры:
strategy — GenerationType
AUTO — по умолчанию
TABLE, SEQUENCE, IDENTITY
generator
2-34
Составные ключи
Использует определенный в приложении класс ключа
◦public-класс верхнего уровня или public static вложенный класс
◦Реализует Serializable
◦public конструктор по умолчанию
◦Методы hashCode и equals
используют ключевые поля
2-35
Аннотации составных ключей
Аннотирование класса ключа и его полей
Аннотирование поля встроенного ключа
2-36
Хранимые поля
Значения хранимых полей
сохраняются в БД
Два типа хранимых полей:
◦Простые (поля-значения)
◦Отношения (связи)
transient и @Transient поля не могут быть хранимыми
Остальные поля хранимы по умолчанию
2-37
Типы простых полей
Примитивные типы и их обертки
java.lang.String
java.math.BigInteger/BigDecimal
java.util.Date/Calendar
java.sql.Date/Time/Timestamp
Массивы Byte, Byte, char, Char
Перечисления
Любой Serializable класс
2-38
Аннотации простых полей
Аннотация @Basic
Опциональна, но рекомендуется для
определения типа доступа
Два параметра:
◦fetch
FetchType.EAGER (по умолчанию)
FetchType.LAZY
◦optional
true (по умолчанию для непримитивов)
false (по умолчанию для примитивов)
2-39
Аннотация @Temporal
Дополняет аннотацию @Basic
Применяется к полям типа java.util.Date/Calendar
Возможные значения:
◦TemporalType.DATE
◦TemporalType.TIME
◦TemporalType.TIMESTAMP
2-40