КАТЕГОРИИ: Архитектура-(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
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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |