Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Вимоги до клієнтських програм

Для правильної роботи клієнта необхідно мати 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 – папка, в яку будуть зберігатися вихідні файли для проекції

5. В класі з’явиться наступне визначення:

Projection LibraryProjection As %Projection.Java

(ROOTDIR = "M:\Program\JavaCacheSample\src\javacachesample");

Рис. 5

6. Скомпілювати класи за допомогою меню Build —> Compile

7. Генератор створить вихідний Java код у папці зазначеній у параметрі ROOTDIR

8. Додати отримані класи до Java проекту (або папку з ними до Classpath) та скомпілювати проект.

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

Relationship PhoneNumbers As JavaTutorial.PhoneNumber (JAVATYPE = "java.util.Map")

[ Cardinality = children, Inverse = Contact ];

 

Рекомендовані типи наведені в таблиці 1.

Таблиця 1

Тип колекції Java тип
Array · %Library.ArrayOfDataTypes · %Library.ArrayOfObjects java.util.Map
List · %Library.ListOfDataTypes · %Library.ListOfObjects java.util.List

3. Підключення до БД

Є два типи підключень до БД Caché:

- Звичайне підключення:

o підтримує усі види методів, як методи об’єктів, так і класів;

o підтримує відкриття багатьох екземплярів одного об’єкта одночасно;

o створюється використовуючи метод getDatabase класу com.intersys.objects.CacheDatabase.

- Спрощене підключення:

o працює швидше за звичайне підключення;

o підтримує виконання методів класу;

o підтримує виконання методів об’єктів, якщо вони збережені або є гетерами і сетерами;

o не підтримує виконання методів об’єктів, що не являються збереженими або не є гетерами і сетерами;

o не дозволяє відкривати більше одного екземпляру об’єкта;

o створюється використовуючи метод getLightDatabase класу com.intersys.objects.CacheDatabase.

Для підключення потрібно передати три параметри: адресу підключення (включаючи простір імен), ім’я користувача та пароль:

public static Database createConnection() throws CacheException {

String url="jdbc:Cache://localhost:1972/USER";

String username="_SYSTEM";

String pwd="SYS";

Database db = CacheDatabase.getDatabase(url, username, pwd);

return db;

}

 

Оскільки методи getLightDatabase та getDatabase можуть повертати виключення типу CacheException, його потрібно обробити:

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

4. Об’єктний доступ до даних

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

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

 

5. Реляційний доступ до даних

Окрім об’єктного доступу, Caché також надає декілька способів реляційного отримання даних з БД:

- Методи-запити класу;

- Динамічні запити;

- Вбудований SQL ().




Переглядів: 243

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.