Создание класса-сущности
БД позволяет хранить информацию в таблицах, для того чтобы это осуществить, у hibernate существует специальный механизм — mapping. Mapping-проецирование (сопоставление) Java классов с таблицами базы данных. Реализация маппинга возможна через использование конфигурационных файлов XML, либо через аннотации. Так как описание маппинга через файлы XML неудобно и уже устаревает, в примере использованы аннотации. Пример:
- 1. importjavax.persistence.*;
- 2. ©Entity
- 3. @Table (name = "people")
- 4. public class People {
- 5. @Id
- 6. @GeneratedValue (strategy = GenerationType.IDENTITY)
- 7. @Column (name = "id", unique = true, nullable = false)
- 8. private Integer id;
- 9. @Column (name = "firstName")
- 10. private String firstName;
- 11. @Column (name = "lastName")
- 12. private String lastName;
- 13. @Column (name = "middleName")
- 14. private String middleName;
- 15. @Column ()
- 16. private int year;
- 17.
- 18. public Integer getld () {
- 19. return id;
- 20. }
- 21. public void setld (Integer id) {
- 22. this.id = id;
- 23. }
- 24. ...
- 25. }
Для того чтобы созданный класс воспринимался hibernate как некоторая сущность бизнес-модели, необходимо пометить аннотацией @Entity.
Аннотация @ТаЫе позволяет задать имя, под которым данная сущность будет существовать в БД (позволяет задать имя таблицы), а также другие конфигурационные параметры. Если имя таблицы совпадает с именем класса, аннотацию можно не использовать.
В каждой сущности должен быть указан первичный ключ, который помечается @Id. Аннотация @GeneratedValue указывает, что данное поле будет генерироваться автоматически при создании нового элемента в таблице.
@ Column — один из основных аннотаций, который указывает, что поле, описанное после него, будет храниться в БД.
Поле, над которым стоит аннотация Id, GeneratedValue, Column, должно быть либо примитивом, либо оберткой над этим примитивом: String; java.util.Date; java.sql.Date; java.math.BigDecimal; java. math.Biglnteger.
По правилам хорошего тона класс нужно оформлять как просто POJO-объект, то есть поля должны иметь спецификатор доступа private. А доступ к этим полям осуществляется с помощью геттеров и сеттеров, как показано в примере, строчкиа 18-23.
В БД данная сущность будет выглядеть следующим образом (рис. 2.1).

Рис. 2.1. Структура класса-сущности People в БД