
Об’єктний доступ до даних
Після підключення до БД, можна починати працювати з об’єктами.
Для того, щоб створити новий об’єкт потрібно використати конструктор, що міститься в класі-проекції. Він створює екземпляр класу на клієнті і відповідний екземпляр на сервері. Однак, створення об’єкту автоматично не записує його до БД, тобто 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();