Skip to content

Latest commit

 

History

History
82 lines (59 loc) · 4.54 KB

ObjDB_Lab2.md

File metadata and controls

82 lines (59 loc) · 4.54 KB

Лабораторная работа №2

Задание

Создать классы на 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;
    ...
    ...
  }