МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
||||||
Вимоги до клієнтських програмДля правильної роботи клієнта необхідно мати 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
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 При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове. |
|