Для правильної роботи клієнта необхідно мати Java SDK як мінімум версії 1.5. Для кожної версії SDK існує своя версія бібліотеки CacheDB.jar, яка знаходиться у папці
C:\InterSystems\Cache\dev\java\lib
Javadoc’и містяться у папці: C:\InterSystems\Cache\dev\java\doc.
Необов’язково копіювати CacheDB.jar у папку із застосуванням, потрібно лише додати папку із бібліотекою у Classpath програми.
2. Генерація проксі-класів
Для генерації проксі-класів (проекцій) потрібно додати властивість Projection до визначення класу.
В такому випадку, при компіляції класу, Java Class Generator автоматично згенерує вихідні файли для проекції. Для генерації Java класів потрібно виконати наступні кроки:
1. Обрати пункт меню Class —> Add —> New Projection (рис. 3)
Рис. 3
2. У вікні зазначити ім’я проекції (рис. 4)
Рис. 4
3. Обрати тип проекції (рис. 5)
4. Зазначити параметр ROOTDIR – папка, в яку будуть зберігатися вихідні файли для проекції
6. Скомпілювати класи за допомогою меню Build —> Compile
7. Генератор створить вихідний Java код у папці зазначеній у параметрі ROOTDIR
8. Додати отримані класи до Java проекту (або папку з ними до Classpath) та скомпілювати проект.
Окрім цього, якщо у БД є властивості-відношення, списки або масиви, то можна прямо вказати якого типу повинні бути ці властивості у Java. Для цього можна модифікувати код Caché класу або змінити параметри в інспекторі об’єктів:
Relationship PhoneNumbers As JavaTutorial.PhoneNumber (JAVATYPE = "java.util.Map")
Після підключення до БД, можна починати працювати з об’єктами.
Для того, щоб створити новий об’єкт потрібно використати конструктор, що міститься в класі-проекції. Він створює екземпляр класу на клієнті і відповідний екземпляр на сервері. Однак, створення об’єкту автоматично не записує його до БД, тобто 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, яке потрібно обробити:
Якщо у програмі використовуються відношення, то метод get<PropertyName> поверне посилання на колекцію дочірніх об’єктів типу com.intersys.classes.RelationshipObject, який застосовую інтерфейс java.util.Map. Тобто можна використовувати методи java.util.Map для ітерування між екземплярами класів для отримання даних: