русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 570; Нарушение авторских прав


Для правильної роботи клієнта необхідно мати 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 ().



<== предыдущая лекция | следующая лекция ==>
Работа со строками | Динамічні запити


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.481 сек.