Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Архітектура Caché Java Binding.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
359.42 Кб
Скачать
  1. Об’єктний доступ до даних

Після підключення до БД, можна починати працювати з об’єктами.

Для того, щоб створити новий об’єкт потрібно використати конструктор, що міститься в класі-проекції. Він створює екземпляр класу на клієнті і відповідний екземпляр на сервері. Однак, створення об’єкту автоматично не записує його до БД, тобто Caché автоматично не присвоює цьому об’єкту унікальний ідентифікатор. Для створення об’єкту потрібно виконати наступний код:

Type newType = new Type(db);

Для отримання доступу до існуючого об’єкту в БД, потрібно використати метод _open, який має кілька синтаксисів:

Book b = (Book)(Book._open(db, new Id(1)));

Book b = (Book)(Book._open(db, new Oid(1)));

Для доступу до властивостей об’єкту використовується звичайний синтаксис Java, тобто використовуються методи setPropertyName() та getPropertyName():

curType.setid(jTextField1.getText());

curType.setname(jTextField2.getText());

jTextField1.setText(curType.getid());

jTextField2.setText(curType.getname());

Для збереження об’єкту в БД потрібно викликати метод save, який повертає 1 при виконанні без помилок.

if (curType.save() != 1) {

System.out.println("Problem occured while updating a record");

};

Для видалення об’єкту використовується метод delete:

curType.delete();

Усі вищезазначені методи можуть повертати виключення типу CacheException, яке потрібно обробити:

catch (CacheException e){System.out.println(e.getMessage());}

Якщо у програмі використовуються відношення, то метод get<PropertyName> поверне посилання на колекцію дочірніх об’єктів типу com.intersys.classes.RelationshipObject, який застосовую інтерфейс java.util.Map. Тобто можна використовувати методи java.util.Map для ітерування між екземплярами класів для отримання даних:

try

{

Book b = (Book)(Book._open(db, new Id(1)));

Map chaptersMap = (Map)b.getcontents();

Iterator iter = chaptersMap.keySet().iterator();

DefaultTableModel dt = new DefaultTableModel();

String[] col = new String[3];

col[0] = "Number";

col[1] = "Name";

col[2] = "Page";

dt.setColumnIdentifiers(col);

String[] row = new String[3];

while (iter.hasNext()){

Object key=iter.next();

Chapters ch = (Chapters)chaptersMap.get(key);

row[0] = ch.getnumber();

row[1] = ch.getname();

row[2] = ch.getpage().toString();

dt.addRow(row);

}

jTable2.setModel(dt);

}

catch (CacheException e){System.out.println(e.getMessage());}

Якщо потрібно вставити новий об’єкт у відношення, то використовується метод set<PropertyName> дочірнього об’єкту:

PhoneNumber phoneNumber = new PhoneNumber(db);

phoneNumber.setNumber(number);

phoneNumber.setPhoneNumberType(type);

phoneNumber.setContact(contact);

phoneNumber.save();