SPRING-SOURCE.RU

Метаданные отображения

Spring метаданные отображения

После создания или генерирования классов можно добавлять метаданные отображения (МО).

МО делятся на аннотации над классом, аннотации над полями.

В JPA аннотации можно даже не прописывать. Если над полем нет аннотации, то оно все равно сохраняется в базу данных. JPA по умолчанию сохраняет все поля которые есть в объекте, если, конечно, над объектом стоит аннотация @Entity. Чтобы поле не сохранялось @Transient.

Не все поля сохраняются (все, что не implement Serializable). Java Socket тоже не сохраняется.

Аннотации над классом

@Entity //Над каждым классом, который будет сохраняться в БД
@Entity (name = "name") // name нужно, чтобы позже использовать его в запросах, если name не указан, то указывается имя класса

@Table (name = "name") // Необязательно. Если не указываем, то наш класс будет сохраняться в таблицу с именем класса либо name.
@Table (name = "name", schema = "name") //schema – наподобие каталога

Другие аннотации:

@NamedQueries // можно сразу написать запросы, которые будут выполняться с этим классом.
...

Аннотации над полями

@Basic // означает, что поле сохраняется в базу, но поле так и так сохраняется. То есть здесь просто создается видимость сохранения. Можно не писать
@Basic (optional = "true") // Если стоит true, то это будет обычное поле (колонка) в БД, если false – значение колонки будет null

@Column (name = "name") // В какую колонку будет сохраняться наше поле. Если нет name, то колонка будет соответствовать имени поля.
@Column (name = "name", unique = "true", nullable = "true")// Параметр уникальности колонки, следующий параметр обозначает, допустимы ли null значения или нет

@Temporal (TIMESTAMP) // ставим над Date или Calendar (лучше calendar)
@Temporal (DATE)

Еще аннотации над полями

@Id// primary key поле
@GeneratedValue // автоматическое генерирование уникального поля. Используется с @id

@Transient
@Enumerated // наследуемые от класса enum

@Lob // - Large Object string поля, где много текста (поле будет генерировать в базе с типом varchar длинной 255)

Другие аннотации:

@OneToMany @ManyToOne
...