Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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




Поделиться с друзьями:


Дата добавления: 2015-01-03; Просмотров: 272; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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