Создать классы на Java для Berkeley DB, описывающие модель базы данных по ЛР №1.
Примеры оформления классов приведены в официальной документации - классы Vendor
и Inventory
.
Программа на Java состоит из классов. Каждый класс хранится в отдельном файле. Имя файла должно совпадать с именем класса, расширение файла - *.java
.
Для того, чтобы класс стал сущностью БД надо выше определения класса добавить аннотацию @Entity
.
Пример класса сущности:
@Entity
public class organization {
@PrimaryKey(sequence="ID")
private int id;
private String name;
private String addr;
private String opf;
private String bank;
private int inn;
@SecondaryKey(relate=ONE_TO_ONE, relatedEntity=leaders.class, name="id")
private int leader_id;
private organization() { }
public organization(int id, String name, String addr, String opf, String bank, int inn, int leader_id) {
this.id = id;
this.name = name;
this.addr = addr;
this.opf = opf;
this.bank = bank;
this.inn = inn;
this.leader_id = leader_id;
}
Аннотация @PrimaryKey
объявляет первичным ключом поле id
.
Аннотация @SecondaryKey
объявляет связь ONE_TO_ONE
(один к одному) текущего поля leader_id
класса organization
с полем id
класса leaders
.
Могут использоваться следующие типы связей:
-
ONE_TO_ONE
Эта связь показывает, что вторичным ключом является уникальный объект. Например, объект Работник может быть сохранен с табельным номером в качестве первичного ключа и номером ИНН в качестве вторичного. Оба значения являются уникальными в хранилище данных.
-
MANY_TO_ONE
Показывает, что вторичный ключ может использовать несколько объектов. Например, у одного менеджера в подчинении несколько сотрудников, а у каждого сотрудника начальником является один менеджер.
-
ONE_TO_MANY
Показывает, что вторичный ключ может быть использован множеством объектов. Например, сотрудники могут иметь несколько email адресов. Каждый такой email адрес является уникальным в хранилище данных, но каждому такому адресу соответствует только один объект Сотрудник.
-
MANY_TO_MANY
Множеству объектов одной сущности может соответствовать множество объектов другой. Например, в организации есть разделяемый ресурс (общие принтеры). Можно отследить, какие принтеры использует конкретный сотрудник (а их может быть несколько). Также можно отслеживать, какие сотрудники могут использовать определенный принтер.
Аннотация @Persistent
определяет постоянный класс. Например, каждый класс сущностей содержит PrimaryIndex по которому производится доступ к экземплярам данного класса. Поэтому можно вынести общее поле классов сущностей в один базовый класс.
Пример:
@Persistent
class BaseClass {
@PrimaryKey(sequence="ID")
private int id;
}
@Entity
class organization extends BaseClass {
private String name;
private String addr;
...
...
}