Skip to content

5. Додатки

Тут ми описуємо встановлення та базове використання інструментів, що застосовуються в документі «Персистентність Java 5 на практиці». Наведена нижче інформація актуальна станом на травень 2007 року. Вона швидко застаріє. Коли це станеться, читачеві буде запропоновано виконати аналогічні, але не ідентичні дії. Встановлення було виконано на комп’ютері з ОС Windows XP Professional.

5.1. Java

Ми використовуватимемо останню версію Java, доступну на сайті Sun [http://www.sun.com]. Завантажити її можна за посиланням [http://java.sun.com/javase/downloads/index.jsp]:

Image

Image

Запустіть інсталяцію JDK із завантаженого файлу. За замовчуванням Java інсталюється в [C:\Program Files\Java]:

Image

5.2. Eclipse

5.2.1. Базова інсталяція

Eclipse — це IDE, доступний за адресою [http://www.eclipse.org/], який можна завантажити за адресою [http://www.eclipse.org/downloads/]. Нижче ми завантажуємо Eclipse 3.2.2:

Image

Після завантаження архіву його потрібно розпакувати в папку на диску:

Image

Надалі папку з інсталяцією Eclipse, зазначену вище як [C:\devjava\eclipse 3.2.2\eclipse], ми будемо називати <eclipse>. [eclipse.exe] — це виконуваний файл, а [eclipse.ini] — його файл конфігурації. Давайте подивимося на його вміст:

1
2
3
-vmargs
-Xms40m
-Xmx256m

Ці аргументи використовуються під час запуску Eclipse наступним чином:

eclipse.exe -vmargs -Xms40m -Xmx256m

Ми отримуємо той самий результат, що й у випадку з файлом .ini, створивши ярлик, який запускає Eclipse з цими самими аргументами. Роз’яснимо їх:

  1. -vmargs: вказує, що наступні аргументи призначені для віртуальної машини Java, яка виконуватиме Eclipse. Eclipse — це Java-додаток.
  2. -Xms40m: ?
  3. -Xmx256m: встановлює розмір пам’яті в Мб, виділений для віртуальної машини Java (JVM), яка виконує Eclipse. За замовчуванням цей розмір становить 256 Мб, як показано тут. Якщо ресурси машини дозволяють, краще встановити 512 Мб.

Ці аргументи передаються до JVM, яка запускає Eclipse. JVM представлена файлом [java.exe] або [javaw.exe]. Як його знайти? Насправді його шукають різними способами:

  • у файлі PATH, що міститься у OS
  • у папці <JAVA_HOME>/jre/bin, де JAVA_HOME — це системна змінна, що визначає кореневу папку JDK.
  • у місце, яке передається як аргумент до Eclipse у вигляді -vm <шлях>\javaw.exe

Останній варіант є кращим, оскільки два інші схильні до непередбачуваних наслідків подальшої інсталяції програм, які можуть або змінити PATH на OS, або змінити змінну JAVA_HOME.

Тому ми створюємо такий ярлик:

Image

cible
<eclipse>\eclipse.exe" -vm "C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m
Démarrer dans
папка <eclipse> з інсталяцією Eclipse

Після цього запустимо Eclipse за допомогою цього ярлика. З’явиться перше діалогове вікно:

Image

[workspace] — це робоча область. Приймемо запропоновані значення за замовчуванням. За замовчуванням проекти Eclipse створюватимуться у папці <workspace>, вказаній у цьому діалоговому вікні. Існує спосіб обійти цю поведінку. Саме це ми й робитимемо систематично. Тому відповідь, надана у цьому діалоговому вікні, не має значення.

Після цього кроку відобразиться середовище розробки Eclipse:

Image

Ми закриваємо вікно [Welcome], як запропоновано вище:

Image

Перш ніж створити проект Java, ми налаштуємо Eclipse, вказавши, що для компіляції проектів Java слід використовувати JDK. Для цього вибираємо опцію [Window / Preferences / Java / Installed JREs ]:

Image

Зазвичай JRE (Java Runtime Environment), який використовувався для запуску самого Eclipse, має бути присутнім у списку JRE. Зазвичай це буде єдиний запис. Можна додати JRE за допомогою кнопки [Add]. Для цього потрібно вказати кореневий каталог JRE. Кнопка [Search], у свою чергу, запустить пошук JREs на диску. Це хороший спосіб дізнатися, що відбувається з JREs, які ми встановлюємо, а потім забуваємо видалити при переході на новішу версію. Вище позначений JRE — це той, який буде використовуватися для компіляції та виконання Java-проектів. Саме його було встановлено в розділі 5.1, і саме він також використовувався для запуску Eclipse. Подвійне клацання по ньому відкриває вікно його властивостей:

Image

Тепер створимо Java-проект [File / New / Project]:

Виберіть [Java Project], а потім [Next] ->

Image

У [2] вказуємо порожню папку, в яку буде встановлено проект Java. У [1] задаємо ім’я проекту. Він не обов’язково має мати таку саму назву, як папка, на відміну від того, що може здатися з наведеного вище прикладу. Після цього натискаємо кнопку [Next], щоб перейти на наступну сторінку майстра створення:

Image

Вище ми створюємо спеціальну папку в проєкті для зберігання вихідних файлів (.java):

Image

  • у [1] ми бачимо папку [src], у якій будуть зберігатися вихідні файли .java
  • у [2] ми бачимо папку [bin], у якій будуть зберігатися скомпільовані файли .class

Ми завершуємо роботу майстра з [Finish]. Отже, ми маємо каркас проекту Java:

Image

Клацнімо правою кнопкою миші на проекті [test1], щоб створити клас Java:

Image

  1. у [1] — папці, в якій буде створено клас. Eclipse за замовчуванням пропонує папку поточного проєкту.
  2. у [2] — пакет, у якому буде розміщено клас
  3. у [3] — ім’я класу
  4. у [4] ми вказуємо, що має бути згенерований статичний метод [main]

Ми підтверджуємо дії майстра за допомогою [Finish]. Після цього проект доповнюється класом:

Image

Eclipse згенерував каркас класу. Його можна відкрити, двічі клацнувши на [Test1.java] вище:

Image

Ми змінюємо наведений вище код наступним чином:

Image

Запускаємо програму [Test1.java]: [clic droit sur Test1.java -> Run As -> Java Application]

Image

Результат виконання відображається у вікні [Console]:

Image

Вікно [Console] має з’явитися за замовчуванням. Якщо цього не сталося, його можна викликати за допомогою команди [Window/Show View/Console]:

Image

5.2.2. Вибір компілятора

Eclipse дозволяє генерувати код, сумісний з Java 1.4, Java 1.5 та Java 1.6. За замовчуванням він налаштований на генерацію коду, сумісного з Java 1.4. Для API та JPA потрібен код Java 1.5. Змінюємо тип коду, що генерується [Window / Preferences / Java / Compiler]:

  • на [1]: вибір опції [Java / Compiler]
  • на [2]: вибір сумісності з Java 5.0

5.2.3. Встановлення плагінів Callisto для

Базова версія, встановлена вище, дозволяє створювати консольні Java-додатки, але не веб-додатки чи додатки типу Swing; у таких випадках все доводиться робити самостійно. Ми встановимо різні плагіни:

Процедура така: [Help/Software Udates/Find and Install]:

  • у [2] вказуємо, що хочемо встановити нові плагіни
  • у [3] вказуємо сайти, які слід переглянути для пошуку плагінів
  • у [4] потрібно позначити потрібні плагіни
  • у [5] Eclipse повідомляє, що вибрано плагін, який залежить від інших плагінів, що не були обрані
  • у [6] використовується кнопка [Select Required] для автоматичного вибору відсутніх плагінів
  • у [7] приймаються умови ліцензій цих різних плагінів
  • у [8] відображається список усіх плагінів, які будуть встановлені
  • у [9] запускається завантаження цих плагінів
  • у [10], після їх завантаження встановлюються всі плагіни без перевірки їх підпису
  • у [11], після завершення встановлення плагінів даємо Eclipse перезапуститися
  • у [12]; якщо виконати [File/New/Project], виявляється, що тепер можна створювати веб-додатки, чого спочатку не було.

5.2.4. Встановлення плагіна [TestNG]

TestNG (Test Next Generation) — це інструмент для модульного тестування, схожий за своєю концепцією на JUnit. Однак він має вдосконалення, завдяки яким ми віддаємо йому перевагу перед JUnit. Діємо так само, як і раніше: [Help/Software Udates/Find and Install]:

  • у [2] вказуємо, що хочемо встановити нові плагіни
  • у [3a] сайт для завантаження [TestNG] відсутній. Ми додаємо його за допомогою [3b]
  • у [4b]: сайт плагіна — [http://beust.com/eclipse]. У [4a] вказуємо те, що хочемо.
  • у полі [5a] для оновлення вибрано плагін [TestNG]. У полі [5b] запускається процес оновлення.
  • У [6] встановлено з’єднання з сайтом плагіна. Нам показуються всі плагіни, доступні на сайті. Тут лише один, який ми вибираємо, перш ніж перейти до наступного етапу.
  • у [7] приймаємо умови ліцензії плагіна
  • у [8] ми бачимо список усіх плагінів, які будуть встановлені, тут — один. Запускаємо завантаження. Далі все відбувається так, як описано вище для плагінів Callisto.

Після перезапуску Eclipse можна переконатися в наявності нового плагіна, наприклад, переглянувши доступні вікна [Window / show View / Other]:

 

Як бачимо вище, з’явився новий вигляд [TestNG], якого раніше не було.

5.2.5. Встановлення плагіна [Hibernate Tools]

Hibernate — це постачальник JPA, а плагін [Hibernate Tools] для Eclipse є корисним при розробці додатків JPA. У травні 2007 року лише її остання версія (3.2.0beta9) дозволяє працювати з Hibernate/JPA, але її неможливо завантажити за допомогою описаного вище механізму. Доступні лише старіші версії. Тому ми будемо діяти інакше.

Плагін доступний на сайті Hibernate Tools: http://tools.hibernate.org/.

  • у [1], вибираємо останню версію Hibernate Tools
  • у [2] завантажуємо її
  • у [3] за допомогою програми для розпакування розпакуйте завантажений zip-файл у папку <eclipse> (бажано, щоб Eclipse не працював)
  • у [4], підтверджуємо, що під час операції деякі файли будуть перезаписані

Перезапускаємо Eclipse:

  • у [1]: відкриваємо перспективу
  • у [2]: тепер існує перспектива [Hibernate Console]

Ми не будемо далі працювати з плагіном [Hibernate Tools] (натискаємо «Cancel» у [2]). Спосіб його використання пояснено у прикладах цього посібника.

Іноді Eclipse не виявляє наявність нових плагінів. Можна змусити програму повторно просканувати всі плагіни за допомогою опції -clean. Таким чином, виконуваний файл ярлика Eclipse слід змінити наступним чином:


"<eclipse>\eclipse.exe" -clean -vm "C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m

Після того як Eclipse виявить нові плагіни, слід видалити згадану вище опцію -clean.

5.2.6. Встановлення плагіна [SQL Explorer]

Тепер ми встановимо плагін, який дозволить нам переглядати вміст бази даних безпосередньо з Eclipse. Доступні для Eclipse плагіни можна знайти на сайті [http://eclipse-plugins.2y.net/eclipse/plugins.jsp]:

  • на [1]: сайт плагінів Eclipse
  • на [2]: виберіть категорію [Database]
  • на [3]: у категорії [Database] виберіть сортування за рейтингом (не надто надійне, з огляду на невелику кількість голосуючих)
  • у [4]: QuantumDB посідає 1-ше місце
  • у [5]: ми обираємо SQLExplorer — старіший, з нижчим рейтингом (3-тє місце), але все одно дуже хороший. Переходимо на сайт плагіна [plugin-homepage]
  • у [6] та [7]: завантажуємо плагін.
  • та [8]: розпакуйте zip-файл плагіна у папку Eclipse.

Щоб перевірити, перезапустіть Eclipse, за необхідності з опцією -clean:

  • у [1]: відкрийте нову перспективу
  • в [2]: бачимо, що доступна перспектива [SQL Explorer]. До неї ми повернемося пізніше.

5.3. Контейнер сервлетів Tomcat 5.5

5.3.1. Встановлення

Для виконання сервлетів нам потрібен контейнер сервлетів. Тут ми розглянемо один із них — Tomcat 5.5, доступний за адресою http://tomcat.apache.org/. Ми наведемо покрокову інструкцію (станом на травень 2007 року) щодо його встановлення. Якщо попередня версія Tomcat уже встановлена, краще спочатку її видалити.

Image

Щоб завантажити продукт, перейдіть за посиланням [Tomcat 5.x], наведеним вище:

Image

Можна завантажити файл .exe, призначений для платформи Windows. Після завантаження запустіть інсталяцію Tomcat, двічі клацнувши на ньому:

Image

Погодьтеся з умовами ліцензії ->

Image

Виконайте [next] ->

Image

Прийняти запропоновану папку для встановлення або змінити її за допомогою [Browse] ->

Image

Встановити логін та пароль адміністратора сервера Tomcat. Тут вказано [admin / admin] ->

Tomcat 5.x потребує JRE версії 1.5. Зазвичай він має знайти той, що встановлений на вашому комп’ютері. Вище вказано шлях до JRE версії 1.6, завантаженого в розділі 5.1. Якщо JRE не знайдено, вкажіть його кореневий каталог за допомогою кнопки [1]. Після цього скористайтеся кнопкою [Install], щоб встановити Tomcat 5.x ->

Image

Кнопка [Finish] завершує встановлення. Про наявність Tomcat свідчить іконка праворуч на панелі завдань Windows:

Image

Правий клік на цій іконці відкриває доступ до команд «Увімкнути» та «Вимкнути» сервера:

Image

Ми використовуємо опцію [Stop service], щоб негайно зупинити веб-сервер:

Image

Зверніть увагу на зміну стану піктограми. Її можна прибрати з панелі завдань:

Image

Встановлення Tomcat відбулося у папці, обраній користувачем, яку відтепер називатимемо <tomcat>. Структура цієї папки для завантаженої версії Tomcat 5.5.23 є такою:

Image

В результаті встановлення Tomcat у меню з’явилася низка ярликів [Démarrer]. Ми використовуємо посилання [Monitor], наведене нижче, для запуску інструменту зупинки/запуску Tomcat:

Image

Після цього ми бачимо значок, показаний раніше:

Image

Монітор Tomcat можна увімкнути подвійним клацанням на цій піктограмі:

Image

Кнопки [Start - Stop - Pause] — «Restart» дозволяють запускати, зупиняти та перезапускати сервер. Запускаємо сервер за допомогою кнопки [Start], а потім у браузері вводимо URL-адресу http://localhost:8080. Ми повинні побачити сторінку, схожу на таку:

Image

Щоб перевірити правильність встановлення Tomcat, можна перейти за наведеними нижче посиланнями:

Image

Усі посилання на сторінці [http://localhost:8080] є цікавими, і читачеві пропонується ознайомитися з ними. Ми ще повернемося до посилань, що дозволяють керувати веб-додатками, розгорнутими на сервері:

Image

5.3.2. Розгортання веб-додатку на сервері Tomcat

5.3.3. Розгортання

Веб-додаток має відповідати певним правилам, щоб його можна було розгорнути в контейнері сервлетів. Нехай <webapp> — це папка веб-додатка. Веб-додаток складається з:

classes
у папці <webapp>\WEB-INF\classes
archives java
у папці <webapp>\WEB-INF\lib
vues, ressources (.jsp, .html, ...)
у папці <webapp> або її підпапках

Веб-додаток налаштовується за допомогою файлу XML: <webapp>\WEB-INF\web.xml. Цей файл не потрібен у простих випадках, зокрема коли веб-додаток містить лише статичні файли. Створимо такий файл HTML:

<html>
    <head>
      <title>Application exemple</title>
  </head>
  <body>
      Application exemple active ....
  </body>
</html>

і збережемо його в папці:

Image

Якщо завантажити цей файл у браузер, ми отримаємо таку сторінку:

Image

URL, що відображається браузером, показує, що сторінка не була надана веб-сервером, а завантажена безпосередньо браузером. Тепер ми хочемо, щоб вона була доступна через веб-сервер Tomcat.

Повернемося до структури каталогів <tomcat>:

Image

Налаштування веб-додатків, розгорнутих на сервері Tomcat, здійснюється за допомогою файлів XML, розміщених у папці [<tomcat>\conf\Catalina\localhost]:

Ці файли XML можна створити вручну, оскільки їхня структура є простою. Однак замість цього ми скористаємося веб-інструментами, які надає Tomcat.

5.3.4. Адміністрування Tomcat-

На своїй сторінці входу http://localhost:8080 сервер пропонує нам посилання для його адміністрування:

Image

Посилання [Tomcat Administration] дає нам можливість налаштувати ресурси, які Tomcat надає веб-додаткам, розгорнутим на ньому, наприклад, пул з’єднань із базою даних. Перейдемо за посиланням:

Image

На сторінці, що відкрилася, зазначено, що для адміністрування Tomcat 5.x потрібен спеціальний пакет під назвою «admin». Повернімося на сайт Tomcat [http://tomcat.apache.org/download-55.cgi]:

Image

Завантажимо архів із назвою [Administration Web Application], а потім розпакуємо його. Його вміст такий:

Image

Папку [admin] потрібно скопіювати в [<tomcat>\server\webapps], де <tomcat> — це папка, в яку було встановлено Tomcat 5.x:

Image

Папка [localhost] містить файл [admin.xml], який потрібно скопіювати в папку [<tomcat>\conf\Catalina\localhost]:

Image

Зупинімо, а потім перезапустимо Tomcat, якщо він був активним. Потім за допомогою браузера знову відкриємо сторінку входу на веб-сервер:

Image

Перейдемо за посиланням [Tomcat Administration]. Ми потрапимо на сторінку входу (щоб її відкрити, може знадобитися «перезавантаження/оновлення» сторінки):

Тут потрібно ввести дані, які ми вказали під час встановлення Tomcat. У нашому випадку ми вводимо комбінацію admin / admin. Кнопка [Login] переводить нас на наступну сторінку:

Image

Ця сторінка дозволяє адміністратору Tomcat налаштувати

  • джерела даних (Data Sources),
  • інформацію, необхідну для відправлення електронної пошти (Mail Sessions),
  • дані середовища, доступні для всіх додатків (Environment Entries),
  • управляти користувачами/адміністраторами Tomcat (Users),
  • управляти групами користувачів (Groups),
  • визначення ролей (= що може або не може робити користувач),
  • визначення характеристик веб-додатків, розгорнутих сервером (Service Catalina)

Перейдімо за посиланням [Roles], наведеним вище:

Image

Роль дозволяє визначити, що може або не може робити користувач чи група користувачів. З роллю пов’язані певні права. Кожен користувач прив’язаний до однієї або кількох ролей і має права, що їм належать. Роль [manager], наведена нижче, надає право керувати веб-додатками, розгорнутими в Tomcat (розгортання, запуск, зупинка, вивантаження). Ми створимо користувача [manager], якого прив’яжемо до ролі [manager], щоб надати йому можливість керувати додатками Tomcat. Для цього перейдемо за посиланням [Users] на сторінці адміністрування:

Image

Ми бачимо, що певна кількість користувачів уже існує. Ми використовуємо опцію [Create New User] для створення нового користувача:

Image

Ми призначаємо користувачеві manager пароль manager та надаємо йому роль manager. Ми використовуємо кнопку [Save], щоб підтвердити це додавання. Новий користувач з’являється у списку користувачів:

Image

Цей новий користувач буде доданий до файлу [<tomcat>\conf\tomcat-users.xml]:

Image

вміст якого такий:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="manager" password="manager" fullName="" roles="manager"/>
  <user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
  • рядок 10: користувач [manager], який було створено

Інший спосіб додавання користувачів — це безпосередня редакція цього файлу. Саме так слід вчинити, якщо, наприклад, ви забули пароль адміністратора «admin» або менеджера.

5.3.5. Управління розгорнутими веб-додатками

Тепер повернімося до сторінки входу [http://localhost:8080] і перейдімо за посиланням [Tomcat Manager]:

Image

Після цього ми потрапляємо на сторінку автентифікації. Ми входимо під ім’ям manager / manager, c.a.d — користувач із роллю [manager], якого ми щойно створили. Адже лише користувач із цією роллю може скористатися цим посиланням. У рядку 11 запису [tomcat-users.xml] ми бачимо, що користувач [admin] також має роль [manager]. Отже, ми також могли б скористатися автентифікацією [admin / admin].

Image

Ми отримуємо сторінку зі списком додатків, які наразі розгорнуті в Tomcat:

Image

Ми можемо додати новий додаток за допомогою форм, розміщених у нижній частині сторінки:

Image

Тут ми хочемо розгорнути в Tomcat приклад додатка, який ми створили раніше. Робимо це таким чином:

Image

Context Path
/example
ім’я, яке використовується для позначення веб-додатка
, що розгортається
Directory URL
C:\data\travail\2006-2007\eclipse\dvp-jpa\annexes\tomcat\приклад
папка веб-додатка

Щоб отримати файл [C:\data\travail\2006-2007\eclipse\dvp-jpa\annexes\tomcat\exemple\exemple.html], ми запитаємо у Tomcat URL та [http://localhost:8080/exemple/exemple.html]. Контекст слугує для присвоєння імені кореневому каталогу дерева розгорнутого веб-додатка. Ми використовуємо кнопку [Deploy] для розгортання додатка. Якщо все пройде успішно, ми отримаємо таку сторінку відповіді:

Image

і новий додаток з’являється у списку розгорнутих додатків:

Прокоментуємо рядок контексту /example вище:

/exemple
посилання на http://localhost:8080/exemple
Démarrer
дозволяє запустити додаток
Arrêter
дозволяє зупинити додаток
Recharger
дозволяє перезавантажити додаток. Це потрібно, наприклад, коли були додані,
змінено або видалено певні класи в додатку.
Undeploy
видалення контексту [/exemple]. Додаток зникає зі списку
доступних додатків.

Тепер, коли наш додаток /example розгорнуто, ми можемо провести кілька тестів. Ми завантажуємо сторінку [exemple.html] за URL-адресою [http://localhost:8080/exemple/vues/exemple.html]:

Image

Інший спосіб розгортання веб-додатку на сервері Tomcat — це вказати дані, які ми ввели через веб-інтерфейс, у файлі [contexte].xml, розміщеному в папці [<tomcat>\conf\Catalina\localhost], де [contexte] — це назва веб-додатку.

Повернемося до адміністративного інтерфейсу Tomcat:

Image

Видаляємо додаток [/exemple] разом із його посиланням [Undeploy]:

Image

Додаток [/exemple] більше не входить до списку активних додатків. Тепер визначимо такий файл [exemple.xml]:

<Context docBase="C:/data/travail/2006-2007/eclipse/dvp-jpa/annexes/tomcat/exemple">
</Context>

Файл XML складається з єдиного тегу <Context>, атрибут якого docBase визначає папку, що містить веб-додаток, який потрібно розгорнути. Помістимо цей файл у <tomcat>\conf\Catalina\localhost:

Image

За необхідності зупинімо та перезапустимо Tomcat, а потім переглянемо список активних додатків за допомогою адміністратора Tomcat:

Image

Додаток [/exemple] дійсно присутній. Запросімо в браузері URL-адресу:

[http://localhost:8080/exemple/exemple.html]:

Image

Розгорнутий таким чином веб-додаток можна видалити зі списку розгорнутих додатків так само, як і раніше, за посиланням [Undeploy]:

Image

У цьому випадку файл [exemple.xml] автоматично видаляється з папки [<tomcat>\conf\Catalina\localhost].

Нарешті, для розгортання веб-додатка в Tomcat також можна визначити його контекст у файлі [<tomcat>\conf\server.xml]. Цю тему ми тут не розглядатимемо.

5.3.6. Веб-додаток із початковою сторінкою

Коли ми звертаємося за URL-адресою [http://localhost:8080/exemple/], отримуємо таку відповідь:

Image

У деяких попередніх версіях Tomcat ми отримали б вміст фізичної папки додатка [/exemple].

Можна налаштувати систему так, щоб при запиті контексту відображалася так звана головна сторінка. Для цього ми створюємо файл [web.xml], який розміщуємо в папці <приклад>\WEB-INF, де <приклад> — це фізична папка веб-додатку [/exemple]. Цей файл має такий вигляд:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <display-name>Application Exemple</display-name>
  <description>Application web minimale</description>
    <welcome-file-list>
        <welcome-file>/exemple.html</welcome-file>
    </welcome-file-list>    
</web-app>
  • рядки 2–5: кореневий тег <web-app> з атрибутами, скопійованими з файлу [web.xml] веб-додатку [/admin] у Tomcat (<tomcat>/server/webapps/admin/WEB-INF/web.xml).
  • рядок 7: ім’я для відображення веб-додатка. Це довільне ім’я, яке має менше обмежень, ніж ім’я контексту додатка. Наприклад, у ньому можна вживати пробіли, що неможливо для імені контексту. Це ім’я відображається, наприклад, у адміністраторі Tomcat:

Image

  1. рядок 8: опис веб-додатка. Цей текст можна згодом отримати програмним шляхом.
  2. рядки 9–11: список файлів привітання. Тег <welcome-file-list> використовується для визначення списку сторінок, які мають відображатися, коли клієнт запитує контекст додатка. Таких сторінок може бути кілька. Клієнту відображається перша знайдена сторінка. Тут у нас є лише одна: [/exemple.html]. Отже, коли клієнт запитає URL-адресу [/exemple], йому фактично буде надано URL-адресу [/exemple/exemple.html].

Збережемо цей файл [web.xml] у папці <приклад>\WEB-INF:

Image

Якщо Tomcat все ще працює, можна змусити його перезавантажити веб-додаток [/exemple] за посиланням [Recharger]:

Image

Під час цієї операції «перезавантаження» Tomcat повторно зчитує файл [web.xml], що міститься у [<exemple>\WEB-INF], якщо він існує. У даному випадку це саме так. Якщо Tomcat було зупинено, запустіть його знову.

За допомогою браузера відкриємо URL та [http://localhost:8080/exemple/]:

Image

Механізм обробки файлів-шаблонів спрацював.

5.3.7. Інтеграція Tomcat в Eclipse

Тепер ми інтегруємо Tomcat в Eclipse. Ця інтеграція дозволяє:

  • запускати/зупиняти Tomcat безпосередньо з Eclipse
  • розробляти веб-додатки на Java та запускати їх на Tomcat. Інтеграція Eclipse та Tomcat дає змогу відстежувати (налагоджувати) виконання додатка, зокрема виконання Java-класів (сервлетів), що запускаються Tomcat.

Запустимо Eclipse, а потім відкриємо вікно [Servers]:

  • у [1]: Window/Show View/Other
  • у [2]: виберіть вікно [Servers] і виконайте [OK]
  • у [1] з’являється новий вигляд [Servers]
  • в [2], клацніть правою кнопкою миші на поданні та виберіть опцію створення нового сервера [New/Server]
  • в [3], вибираємо сервер [Tomcat 5.5], а потім отримуємо [Next]
  • в [4], вказуємо папку встановлення Tomcat 5.5
  • у [5] вказуємо, що на даний момент немає проектів Eclipse/Tomcat. виконуємо [Finish]

Додавання сервера супроводжується додаванням папки в провіднику проектів Eclipse [6] та появою сервера у вікні перегляду [servers] [7]:

У вікні [Servers] відображаються всі зареєстровані сервери, у даному випадку — лише сервер Tomcat 5.5, який ми щойно зареєстрували. Клацнувши на ньому правою кнопкою миші, можна отримати доступ до команд, що дозволяють запустити, зупинити або перезапустити сервер:

Image

На малюнку вище ми запускаємо сервер. Під час його запуску у вікні [Console] записується певна кількість журнальних записів:

1
2
3
4
5
6
7
8
16 mai 2007 09:51:57 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
...
16 mai 2007 09:51:57 org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
...
INFO: Find registry server-registry.xml at classpath resource
16 mai 2007 09:51:58 org.apache.catalina.startup.Catalina start
INFO: Server startup in 828 ms

Розуміння цих журналів вимагає певної практики. Наразі ми не будемо на цьому зупинятися. Однак важливо перевірити, чи не вказують вони на помилки завантаження контекстів. Дійсно, під час запуску сервер Tomcat / Eclipse намагається завантажити контекст додатків, якими він керує. Завантаження контексту додатка передбачає використання його файлу [web.xml] та завантаження одного або декількох класів, що його ініціалізують. При цьому можуть виникнути кілька типів помилок:

  • файл [web.xml] містить синтаксичні помилки. Це найпоширеніша помилка. Рекомендується використовувати інструмент, здатний перевіряти валідність документа XML під час його створення.
  • деякі класи, які потрібно завантажити, не були знайдені. Їх шукають у файлах [WEB-INF/classes] та [WEB-INF/lib]. Зазвичай слід перевірити наявність необхідних класів та правильність написання тих, що оголошені у файлі [web.xml].

Сервер, запущений з Eclipse, має іншу конфігурацію, ніж той, що встановлено в розділі 5.3. Щоб переконатися в цьому, відкриємо URL-адресу [http://localhost:8080] у браузері:

Image

Ця відповідь не означає, що сервер не працює, а лише те, що запитуваний ресурс / недоступний. З сервером Tomcat, інтегрованим в Eclipse, цими ресурсами будуть веб-проєкти. Ми розглянемо це пізніше. А поки що зупинімо Tomcat:

Image

Попередній режим роботи можна змінити. Повернімося до вікна [Servers] і двічі клацнімо на сервері Tomcat, щоб отримати доступ до його властивостей:

1

Поле [1] відповідає за попередній режим роботи. Коли воно відмічене, веб-додатки, розроблені в Eclipse, не заявляються у файлах конфігурації відповідного сервера Tomcat, а в окремих файлах конфігурації. У результаті цього на сервері Tomcat відсутні додатки, визначені за замовчуванням: [admin] та [manager], які є двома корисними додатками. Тому ми знімемо галочку з [1] і перезапустимо Tomcat:

Після цього відкриємо URL-адресу [http://localhost:8080] у браузері:

Image

Ми бачимо той самий принцип роботи, що описано в розділі 5.3.4.

У наших попередніх прикладах ми використовували браузер, що не входить до складу Eclipse. Також можна використовувати вбудований у Eclipse браузер:

Image

Вище ми вибираємо вбудований браузер. Щоб запустити його з Eclipse, можна скористатися такою піктограмою:

Image

Фактично запуститься той браузер, який вибрано за допомогою опції [Window -> Web Browser]. У цьому випадку ми отримуємо вбудований браузер:

1

Image

За необхідності запустимо Tomcat з Eclipse та вкажемо в [1] URL-адресу [http://localhost:8080]:

Image

Перейдемо за посиланням [Tomcat Manager]:

Image

Запитується пара [login / mot de passe], необхідна для доступу до додатка [manager]. Згідно з налаштуваннями Tomcat, які ми зробили раніше, можна ввести [admin / admin] або [manager / manager]. Після цього ми отримаємо список розгорнутих додатків:

Image

5.4. SGBD — « » Firebird

5.4.1. SGBD Firebird

SGBD Firebird доступний за адресою [http://www.firebirdsql.org/]:

  • у [1]: використовується опція [Download.Firebird Relational Database]
  • за посиланням [2]: вказується бажана версія Firebird
  • у [3]: завантажується інсталяційний файл

Після завантаження файлу [3] потрібно двічі клацнути по ньому, щоб встановити Firebird SGBD. SGBD встановлюється в папку, вміст якої виглядає приблизно так:

Image

Бінарні файли знаходяться у папці [bin]:

Image

fbguard.exe
дозволяє запускати/зупиняти SGBD
isql.exe
лінійний клієнт, що дозволяє керувати базами даних

Слід зазначити, що за замовчуванням адміністратор SGBD називається [SYSDBA], а його пароль — [masterkey]. У [Démarrer] встановлено такі меню:

Image

Опція [Firebird Guardian] дозволяє запускати/зупиняти SGBD. Після запуску піктограма SGBD залишається на панелі завдань Windows:

Для створення та роботи з базами даних Firebird за допомогою командного рядка [isql.exe] необхідно ознайомитися з документацією, що постачається разом із продуктом і доступна через ярлики Firebird у [Démarrer/Programmes/Firebird 2.0].

Швидким способом роботи з Firebird та вивчення мови SQL є використання графічного клієнта. Таким клієнтом є IB-Expert, описаний у наступному параграфі.

5.4.2. Робота з SGBD Firebird за допомогою IB- Expert

Головний сайт IB-Expert — [http://www.ibexpert.com/].

  • у [1] виберіть IBExpert
  • на [2] слід вибрати завантаження, попередньо вибравши мову за бажанням
  • у [3] слід вибрати так звану «особисту» версію, оскільки вона безкоштовна. Проте необхідно зареєструватися на сайті.
  • у [4] завантажується IBExpert

IBExpert встановлюється у папку, подібну до такої:

Image

Виконуваний файл — [ibexpert.exe]. Зазвичай у меню [Démarrer] є ярлик:

Image

Після запуску IBExpert відображає таке вікно:

Image

Скористаємося опцією [Database/Create Database] « » для створення бази даних:

Image

Server
(Serveur)
може бути [local] або [remote]. У цьому випадку наш сервер розташований на тій самій машині, що й [IBExpert]. Вибираємо
[local]
Database
(Base de données)
використовуємо кнопку типу [dossier] у списку, щоб вказати файл бази даних. Firebird об’єднує всю
базу даних в один файл. Це одна з її переваг.
Базу даних можна перенести з одного комп’ютера на інший, просто скопіювавши файл.
Суфікс [.fdb] додається автоматично.
Username
SYSDBA — це адміністратор за замовчуванням у поточних дистрибутивах Firebird
Password
(Nom de l'utilisateur)
masterkey — це пароль адміністратора SYSDBA для
Firebird
Dialect
діалект SQL, який слід використовувати
Register Database
(Référencer la base de données)
якщо поле відмічено, IBExpert відображатиме посилання на створену базу даних після її створення

Якщо після натискання кнопки створення [OK] з’являється таке попередження:

Image

це означає, що ви не запустили Firebird. Запустіть його. З’явиться нове вікно:

Image

Charset
(Jeu de caractères)
Сімейство шрифтів, яке слід використовувати. Рекомендується вибрати у випадаючому списку сімейство
[ISO-8859-1], що дозволяє використовувати латинські символи з діакритичними знаками.
Server version
(Version du serveur)
[IBExpert] здатний обробляти різні SGBD, похідні від Interbase.
Виберіть версію Firebird, яку ви встановили.

Після підтвердження цього нового вікна за допомогою [Register] у вікні [Database Explorer] з’являється результат [1]. Це вікно можна випадково закрити. Щоб знову його відкрити, виконайте [2]:

Щоб отримати доступ до створеної бази даних, достатньо двічі клацнути на її посилання. IBExpert відобразить дерево, що надає доступ до властивостей бази даних:

Image

5.4.3. Створення таблиці даних

Створимо таблицю. Клацніть правою кнопкою миші на [Tables] (див. вікно вище) і виберіть опцію [New Table]. З’явиться вікно налаштування властивостей таблиці:

Почнемо з того, що дамо таблиці ім’я [ARTICLES], скориставшись полем введення [1]:

Image

Скористаємося полем введення [2], щоб визначити первинний ключ [ID]:

Image

Поле можна зробити первинним ключем, двічі клацнувши на полі [PK] (Primary Key). Додамо поля за допомогою кнопки, розташованої над [3]:

Image

Доки ми не «скомпілювали» наше визначення, таблиця не створюється. Скористаємося кнопкою [Compile] вище, щоб завершити визначення таблиці. IBExpert готує запити SQL для створення таблиці та запитує підтвердження:

Image

Цікаво, що IBExpert відображає запити SQL, які він виконав. Це дозволяє вивчити не тільки мову SQL, але й діалект SQL, який, можливо, є пропрієтарним. Кнопка [Commit] дозволяє підтвердити поточну транзакцію, а [Rollback] — скасувати її. Тут ми підтверджуємо її за допомогою [Commit]. Після цього IBExpert додає створену таблицю до дерева нашої бази даних:

Image

Двічі клацнувши на таблиці, ми отримуємо доступ до її властивостей:

Image

Панель [Constraints] дозволяє додати до таблиці нові обмеження цілісності. Відкриємо її:

Image

Тут ми бачимо обмеження первинного ключа, яке ми створили. Можна додати й інші обмеження:

  • зовнішні ключі [Foreign Keys]
  • обмеження цілісності полів [Checks]
  • обмеження унікальності полів [Uniques]

Зазначимо, що:

  • поля [ID, PRIX, STOCKACTUEL, STOKMINIMUM] повинні бути >0
  • поле [NOM] має бути непорожнім та унікальним

Відкриємо панель [Checks] і клацнемо правою кнопкою миші в області визначення обмежень, щоб додати нове обмеження:

Image

Визначимо необхідні обмеження:

Image

Зверніть увагу, що в обмеженні [NOM<>''] використовуються дві апострофи, а не лапки. Скомпілюємо ці обмеження за допомогою кнопки [Compile] вище:

Image

І тут знову IBExpert демонструє свою навчальну функцію, вказуючи запити SQL, які він виконав. Тепер перейдемо до панелі [Constraints/Uniques], щоб вказати, що ім’я має бути унікальним. Це означає, що в таблиці не може бути двох однакових імен.

Image

Визначимо обмеження:

Image

Потім скомпілюємо його. Після цього відкриємо панель [DDL] (Data Definition Language) таблиці [ARTICLES]:

Image

Вона надає код SQL для генерації таблиці з усіма її обмеженнями. Цей код можна зберегти у скрипті, щоб виконати його пізніше:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;
CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

5.4.4. Введення даних у таблицю

Тепер настав час внести дані в таблицю [ARTICLES]. Для цього скористаємося її панеллю [Data]:

Image

Дані вводяться подвійним клацанням миші на полях введення кожного рядка таблиці. Новий рядок додається за допомогою кнопки [+], а рядок видаляється за допомогою кнопки [-]. Ці операції виконуються в рамках транзакції, яка підтверджується кнопкою [Commit Transaction] (див. вище). Без цього підтвердження дані будуть втрачені.

5.4.5. Редактор SQL від [IB-Expert]

Мова SQL (Structured Query Language) дозволяє користувачеві:

  1. створювати таблиці, вказуючи тип даних, які в них будуть зберігатися, та обмеження, яким ці дані повинні відповідати
  2. вводити в них дані
  3. змінювати деякі з них
  4. видаляти інші
  5. використовувати їхній вміст для отримання інформації
  6. ...

IBExpert дозволяє користувачеві виконувати операції з 1 по 4 у графічному режимі. Ми щойно це побачили. Коли база даних містить багато таблиць, кожна з яких має сотні рядків, потрібна інформація, яку важко отримати візуально. Припустимо, наприклад, що віртуальний інтернет-магазин має тисячі покупців на місяць. Усі покупки реєструються в базі даних. Через шість місяців виявляється, що товар «X» має дефект. Потрібно зв’язатися з усіма, хто його придбав, щоб вони повернули товар для безкоштовного обміну. Як знайти адреси цих покупців?

  1. Можна візуально переглянути всі таблиці та відшукати цих покупців. На це знадобиться кілька годин.
  2. Можна виконати запит SQL, який за лічені секунди надасть список цих осіб

Мова SQL стає корисною,

  • як обсяг даних у таблицях є значним
  • коли є багато таблиць, пов’язаних між собою
  • інформація, яку потрібно отримати, розподілена між кількома таблицями
  • ...

Тепер ми представляємо редактор SQL від IBExpert. Доступ до нього можна отримати через опцію [Tools/SQL Editor] або [F12]:

Image

Після цього ми отримаємо доступ до розширеного редактора запитів SQL, за допомогою якого можна експериментувати із запитами. Введемо запит:

Image

Виконуємо запит SQL за допомогою кнопки [Execute], розташованої вище. Отримуємо такий результат:

Image

Вище на вкладці [Results] відображається таблиця результатів запиту SQL [Select]. Щоб відправити нове замовлення SQL, достатньо повернутися на вкладку [Edit]. Там ми бачимо замовлення SQL, яке вже було виконано.

Image

Деякі кнопки на панелі інструментів є корисними:

  • кнопка [New Query] дозволяє перейти до нового запиту SQL:

Image

У результаті з’являється порожня сторінка редагування:

Image

Тепер можна ввести нове замовлення SQL:

Image

та виконати його:

Image

Повернемося до вкладки [Edit]. Різні видані накази SQL зберігаються в [IBExpert]. Кнопка [Previous Query] дозволяє повернутися до раніше виданого замовлення SQL:

Image

Після цього відбувається повернення до попереднього запиту:

Image

Кнопка [Next Query] дозволяє перейти до наступного замовлення SQL:

Image

Тоді ми бачимо замовлення SQL, яке йде наступним у списку збережених замовлень SQL:

Image

Кнопка [Delete Query] дозволяє видалити замовлення SQL зі списку збережених замовлень:

Image

Кнопка [Clear Current Query] дозволяє очистити вміст редактора для відображеного замовлення SQL:

Image

Кнопка [Commit] дозволяє остаточно підтвердити зміни, внесені до бази даних:

Image

Кнопка [RollBack] дозволяє скасувати зміни, внесені до бази даних після останнього натискання кнопки [Commit]. Якщо з моменту підключення до бази даних не було натиснуто кнопку [Commit], то скасовуються зміни, внесені саме під час цього сеансу підключення.

Image

Розглянемо приклад. Вставимо новий рядок у таблицю:

Image

Команда SQL виконується, але нічого не відображається. Невідомо, чи відбулося вставлення. Щоб це з’ясувати, виконаємо команду SQL після [New Query]:

Image

Отримуємо [Execute] такий результат:

Image

Отже, рядок було успішно вставлено. Тепер розглянемо вміст таблиці іншим способом. Двічі клацнімо на таблиці [ARTICLES] у браузері баз даних:

Image

Ми отримуємо таку таблицю:

Image

Кнопка зі стрілкою, показана вище, дозволяє оновити таблицю. Після оновлення таблиця, показана вище, не змінюється. Складається враження, що новий рядок не був вставлений. Повернемося до редактора SQL (F12), а потім підтвердимо замовлення SQL, сформоване за допомогою кнопки [Commit]:

Image

Зробивши це, повернімося до таблиці [ARTICLES]. Ми бачимо, що нічого не змінилося навіть після натискання кнопки [Refresh]:

Image

Тепер відкриємо вкладку [Fields], а потім повернемося до вкладки [Data]. Цього разу вставлений рядок відображається правильно:

Image

Коли починається виконання різних команд SQL, редактор відкриває так звану транзакцію в базі даних. Зміни, внесені цими командами SQL редактора SQL, будуть видимі лише доти, доки ви залишаєтеся в тому самому редакторі SQL (можна відкрити кілька редакторів). Все відбувається так, ніби редактор SQL працює не з реальною базою даних, а з власною копією. Насправді це відбувається не зовсім так, але така метафора може допомогти нам зрозуміти поняття транзакції. Усі зміни, внесені до копії під час транзакції, стануть видимими в реальній базі даних лише після їхнього підтвердження за допомогою [Commit Transaction]. Після цього поточна транзакція завершується, і починається нова.

Зміни, внесені під час транзакції, можна скасувати за допомогою операції під назвою [Rollback]. Проведемо такий експеримент. Почнемо нову транзакцію (достатньо виконати [Commit] у поточній транзакції) із таким наказом SQL:

Image

Виконаємо цю команду, яка видаляє всі рядки з таблиці [ARTICLES], а потім виконаємо [New Query] — нову команду SQL:

Image

Отримуємо такий результат:

Image

Усі рядки було видалено. Нагадаємо, що це було зроблено на копії таблиці [ARTICLES]. Щоб це перевірити, двічі клацнімо на таблиці [ARTICLES] нижче:

Image

і переглянемо вкладку [Data]:

Image

Навіть якщо натиснути кнопку [Refresh] або перейти на вкладку [Fields], а потім повернутися на вкладку [Data], наведений вище вміст не змінюється. Це вже було пояснено. Ми перебуваємо в іншій транзакції, яка працює з власною копією. Тепер повернімося до редактора SQL (F12) і скористаймося кнопкою [RollBack], щоб скасувати видалення рядків, які було здійснено:

Image

Нам пропонується підтвердити:

Image

Підтверджуємо. Редактор SQL підтверджує, що зміни скасовано:

Image

Для перевірки повторімо вищезазначений запит SQL. Ми бачимо рядки, які були видалені:

Image

Операція [Rollback] повернула копію, з якою працює редактор SQL, до стану, в якому вона перебувала на початку транзакції.

5.4.6. Експорт бази даних Firebird у скрипт SQL

Під час роботи з різними SGBD, як це відбувається в підручнику «Практичне застосування персистентності в Java 5», корисно мати можливість експортувати базу даних із SGBD 1 у скрипт SQL, щоб потім імпортувати цей скрипт у SGBD 2. Це дозволяє уникнути низки ручних операцій. Однак це не завжди можливо, оскільки файли SGBD часто мають власні розширення SQL.

Покажемо, як експортувати попередню базу даних [dbarticles] у скрипт SQL:

  • у [1]: «Інструменти» / «Витягнути MetaData», щоб витягнути метадані
  • у [2]: вкладка «Метаоб’єкти»
  • у [3]: вибрати таблицю [Articles], структуру (метадані) якої потрібно витягти
  • у [4]: щоб перемістити об’єкт, вибраний ліворуч, праворуч
  • у [5]: таблиця [ARTICLES] увійде до витягнутих метаданих
  • в [6]: вкладка [Table de données] служить для вибору таблиць, вміст яких потрібно витягти (на попередньому етапі експортувалася структура таблиці)
  • у [7]: щоб перемістити об’єкт, вибраний ліворуч, праворуч
  • в [8]: отриманий результат
  • у [9]: вкладка [Options] дозволяє налаштувати певні параметри вилучення
  • у [10]: знімаємо галочки з опцій, пов’язаних із генерацією команд SQL, що дозволяють підключитися до бази даних. Вони є власними для Firebird і тому нас не цікавлять.
  • у [11]: на вкладці [Sortie] можна вказати, де буде згенеровано скрипт SQL
  • у [12]: вказується, що скрипт має бути згенерований у файлі
  • у [13]: вказується розташування цього файлу
  • у [14]: запускається генерація скрипта SQL

Створений скрипт, очищений від коментарів, має такий вигляд:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;

CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);

INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (1, 'article1', 100, 10, 1);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (2, 'article2', 200, 20, 2);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (3, 'article3', 300, 30, 3);

COMMIT WORK;

ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

Примітка: рядки 1–2 характерні для Firebird. Їх потрібно видалити зі згенерованого скрипта, щоб отримати універсальний SQL.

5.4.7. Драйвер Firebird « » JDBC

Програма Java отримує доступ до даних бази даних через драйвер JDBC, що є специфічним для використовуваного SGBD:

У багаторівневій архітектурі, як показано вище, драйвер JDBC [1] використовується рівнем [dao] (об’єкт доступу до даних) для доступу до даних бази даних.

Драйвер JDBC для Firebird доступний за адресою, з якої було завантажено Firebird:

  • у [1]: слід завантажити драйвер JDBC
  • у [2]: вибираємо драйвер JDBC, сумісний з JDK 1.5
  • для [3]: архів, що містить драйвер JDBC, має назву [jaybird-full-2.1.1.jar]. Розпакуємо цей файл. Він буде використовуватися для всіх прикладів JPA з Firebird.

Ми розмістимо його в папці, яку надалі називатимемо <jdbc>:

Image

Щоб перевірити цей драйвер JDBC, ми скористаємося Eclipse та плагіном SQL Explorer (розділ 5.2.6). Почнемо з оголошення драйвера JDBC для Firebird:

  • у [1]: перейдіть у меню «Window» / «Preferences»
  • в [2]: виберіть опцію «SQL Explorer» / «JDBC Drivers»
  • у [3]: вибрати драйвер JDBC для Firebird
  • у [4]: перейти до етапу налаштування
  • у [5]: перейдіть на вкладку [Extra Class Path]
  • за допомогою [6] вказати файл драйвера JDBC. Після цього він з’явиться у [7]. Тут слід вибрати драйвер, попередньо розміщений у папці <jdbc>
  • у [8]: ім'я Java-класу драйвера JDBC. Його можна отримати за допомогою кнопки [8b].
  • виконуємо команду [OK] для підтвердження конфігурації
  • у [9]: драйвер JDBC для Firebird тепер налаштований. Можна переходити до його використання.
  • на [1]: відкрити нову перспективу
  • в [2]: вибрати перспективу [SQL Explorer]
  • в [3]: створити нове з’єднання
  • в [4]: присвоїти йому ім’я
  • у [5]: вибрати з випадаючого списку драйвер JDBC для Firebird
  • в [6]: вказати URL-адресу бази даних, до якої потрібно підключитися, у даному випадку: [jdbc:firebirdsql:localhost/3050:C:\data\2006-2007\eclipse\dvp-jpa\annexes\jpa\jpa.fdb]. [jpa.fdb] — це база даних, створена раніше за допомогою IBExpert.
  • у [7]: ім’я користувача для підключення, у даному випадку [sysdba] — адміністратор Firebird
  • у [8]: його пароль [masterkey]
  • підтверджуємо налаштування з’єднання за допомогою [OK]
  • у [1]: двічі клацаємо на назві з’єднання, яке хочемо відкрити
  • у [2]: входимо в систему (sysdba, masterkey)
  • у [3]: з'єднання відкрито
  • у [4]: відображається структура бази даних. У ній видно таблицю [ARTICLES]. Виберіть її.
  • у [5]: у вікні [Database Detail] відображаються деталі вибраного об’єкта у [4], тут — таблиця [ARTICLES]
  • у [6]: на вкладці [Columns] відображається структура таблиці
  • у [7]: вкладка [Preview] показує структуру таблиці

У вікні [SQL Editor] можна створювати запити SQL:

  • у вікні [1]: вибрати відкрите з’єднання
  • у [2]: ввести команду SQL для виконання
  • у [3]: виконати його
  • в [4]: перегляд виконаної команди
  • у [5]: його результат

5.5. SGBD — MySQL5

5.5.1. Встановлення

SGBD MySQL5 доступний за адресою [http://dev.mysql.com/downloads/]:

  • у [1]: виберіть потрібну версію
  • за посиланням [2]: виберіть версію для Windows
  • на [3]: виберіть потрібну версію Windows
  • у [4]: завантажений zip-файл містить виконуваний файл [Setup.exe] [4b], який потрібно розпакувати та запустити для встановлення MySQL5
  • у [5]: виберіть «Типову інсталяцію»
  • у [6]: після завершення встановлення можна налаштувати сервер MySQL5
  • в [7]: вибрати стандартну конфігурацію, яка вимагає найменше запитань
  • у [8]: сервер MySQL5 буде службою Windows
  • в [9]: за замовчуванням адміністратором сервера є користувач root без пароля. Можна залишити цю конфігурацію або призначити root новий пароль. Якщо встановлення MySQL5 відбувається після видалення попередньої версії, ця операція може завершитися невдачею. Повернутися до попереднього стану буде складніше.
  • у [10]: запитується конфігурація сервера

Встановлення MySQL5 створює папку в [Démarrer / Programmes ]:

Image

Для переконфігурації сервера можна використати [MySQL Server Instance Config Wizard]:

  • на [3]: змінюємо пароль користувача root (тут root/root)

5.5.2. Запуск / Зупинка MySQL5

Сервер MySQL5 було встановлено як службу Windows з автоматичним запуском, c.a.d запускається одразу після запуску Windows. Такий режим роботи є малопрактичним. Ми змінимо його:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • на [1]: двічі клацаємо на [Services]
  • на [2]: бачимо, що існує служба з назвою [MySQL], що вона запущена ([3]) і що її запуск відбувається автоматично ([4]).

Щоб змінити ці налаштування, двічі клацніть на службі [MySQL]:

  • на [1]: встановлюємо ручний запуск служби
  • на [2]: зупиняємо його
  • на [3]: підтверджуємо нову конфігурацію служби

Щоб вручну запустити та зупинити службу MySQL, можна створити два ярлики:

  • у [1]: ярлик для запуску MySQL5
  • [2] — ярлик для його зупинки

5.5.3. Клієнти для адміністрування MySQL

На сайті MySQL можна знайти клієнти для адміністрування SGBD:

  • у [1]: вибрати [MySQL GUI Tools], який об’єднує різні графічні клієнти, що дозволяють або адмініструвати SGBD, або використовувати його
  • у [2]: виберіть відповідну версію для Windows
  • у [3]: завантажте файл .msi для запуску
  • в [4]: після завершення встановлення у папці [Menu Démarrer / Programmes / mySQL] з’являться нові ярлики.

Запустимо MySQL (через ярлики, які ви створили), а потім запустимо [MySQL Administrator] через меню вище:

  • у [1]: введіть пароль користувача root (тут — root)
  • у [2]: ми увійшли в систему і бачимо, що MySQL активний

5.5.4. Створення користувача jpa та бази даних jpa

У цьому посібнику використовується MySQL5 із базою даних під назвою jpa та користувачем з такою самою назвою. Тепер ми їх створимо. Спочатку користувача:

  • у [1]: вибираємо [User Administration]
  • в [2]: клацаємо правою кнопкою миші в області [User accounts], щоб створити нового користувача
  • у [3]: користувач називається jpa, а його пароль — jpa
  • у [4]: підтверджуємо створення
  • у [5]: користувач [jpa] з’являється у вікні [User Accounts]

Тепер база даних:

  • у [1]: вибір опції [Catalogs]
  • у [2]: клацніть правою кнопкою миші на вікні [Schemata], щоб створити нову схему (позначає базу даних)
  • в [3]: присвоюємо назву новій схемі
  • у [4]: вона з’являється у вікні [Schemata]
  • у [5]: вибираємо схему [jpa]
  • у [6]: з’являються об’єкти схеми [jpa], зокрема таблиці. Їх ще немає. Клацнувши правою кнопкою миші, можна створити їх. Ми залишаємо це завдання читачеві.

Повернемося до користувача [jpa], щоб надати йому всі права на схему [jpa]:

  • у [1], а потім у [2]: вибираємо користувача [jpa]
  • в [3]: вибираємо вкладку [Schema Privileges]
  • у [4]: вибираємо схему [jpa]
  • у [5]: надамо користувачеві [jpa] усі права на схему [jpa]
  • в [6]: підтверджуємо внесені зміни

Щоб перевірити, чи користувач [jpa] може працювати зі схемою [jpa], закриваємо адміністратора MySQL. Запускаємо його знову і цього разу входимо під ім’ям [jpa/jpa]:

  • у [1]: входимо (jpa/jpa)
  • у [2]: підключення відбулося успішно, і в [Schemata] ми бачимо схеми, до яких маємо права. Ми бачимо схему [jpa].

Тепер ми створимо ту саму таблицю [ARTICLES], що й у випадку з Firebird SGBD, використовуючи скрипт SQL [schema-articles.sql], згенерований у розділі 5.4.6.

  • у [1]: використовуйте програму [MySQL Query Browser]
  • у [2], [3], [4]: авторизуватися (jpa / jpa / jpa)
  • в [5]: відкрити скрипт SQL для його виконання
  • у [6]: вказати скрипт [schema-articles.sql], створений у розділі 5.4.6.
  • в [7]: завантажений скрипт
  • в [8]: його виконують
  • в [9]: створено таблицю [ARTICLES]

5.5.5. Драйвер JDBC від MySQL5

Драйвер JDBC з MySQL можна завантажити з того самого місця, що й SGBD:

  • у [1]: виберіть відповідний драйвер JDBC
  • у [2]: виберіть відповідну версію для Windows
  • у [3]: у завантаженому zip-файлі архів Java, що містить драйвер JDBC, має назву [mysql-connector-java-5.0.5-bin.jar]. Його потрібно розпакувати, щоб використовувати у прикладах підручника JPA.

Ми розміщуємо його так само, як і попередній (параграф 5.4.7) у папці <jdbc>:

Для тестування цього драйвера JDBC ми будемо використовувати Eclipse та плагін SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, описаної в розділі 5.4.7. Наводимо кілька показових знімків екрана:

  • у [1]: ми вказали архів драйвера JDBC з MySQL5
  • у [2]: драйвер JDBC з MySQL5 доступний
  • в [3]: визначення з'єднання (user, password)=(jpa, jpa)
  • у [4]: з'єднання активне
  • [5]: підключена база даних

5.6. SGBD PostgreSQL

5.6.1. Встановлення

SGBD PostgreSQL доступний за посиланням [http://www.postgresql.org/download/]:

  • у [1]: сайти для завантаження PostgreSQL
  • у [2]: вибрати версію для Windows
  • у [3]: вибір версії з інсталятором
  • в [4]: вміст завантаженого zip-файлу. Двічі клацніть на файлі [postgresql-8.2.msi]
  • в [5]: перша сторінка майстра встановлення
  • в [6]: вибір типової інсталяції з прийняттям значень за замовчуванням
  • в [6b]: створення облікового запису Windows, який запускатиме службу PostgreSQL; тут це обліковий запис pgres із паролем pgres.
  • en [7]: дозволити PostgreSQL створити обліковий запис [pgres], якщо він ще не існує
  • у [8]: визначити обліковий запис адміністратора для SGBD, у даному випадку postgres з паролем postgres
  • у [9] та [10]: прийняти значення за замовчуванням до кінця роботи майстра. PostgreSQL буде встановлено.

В результаті встановлення PostgreSQL у [Démarrer / Programmes ] створюється папка:

Image

5.6.2. Запуск / Зупинка PostgreSQL

Сервер PostgreSQL було встановлено як службу Windows з автоматичним запуском, c.a.d запускається одразу після запуску Windows. Такий режим роботи є малопрактичним. Ми змінимо його:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • на [1]: двічі клацаємо на [Services]
  • на [2]: бачимо, що існує служба з назвою [PostgreSQL], що вона запущена ([3]) і що її запуск відбувається автоматично ([4]).

Щоб змінити ці налаштування, двічі клацніть на службі [PostgreSQL]:

  • на [1]: встановлюємо ручний запуск служби
  • на [2]: зупиняємо його
  • на [3]: підтверджуємо нову конфігурацію служби

Щоб вручну запустити та зупинити службу PostgreSQL, можна скористатися ярликами з папки [PostgreSQL]:

  • в [1]: ярлик для запуску PostgreSQL
  • у [2]: ярлик для його зупинки

5.6.3. Управління PostgreSQL

На знімку екрана вище програма [pgAdmin III] (3) дозволяє керувати SGBD та PostgreSQL. Запустимо SGBD, а потім [pgAdmin III] за допомогою меню, показаного вище:

  • у [1]: двічі клацніть на сервері PostgreSQL, щоб підключитися до нього
  • на [2,3]: увійти як адміністратор сервера SGBD, тут (postgres / postgres)
  • на [4]: єдина існуюча база даних
  • у [5]: єдиний існуючий користувач

5.6.4. Створення користувача jpa та бази даних jpa

У цьому посібнику використовується PostgreSQL із базою даних під назвою jpa та користувачем з такою самою назвою. Тепер ми їх створимо. Спочатку користувача:

  • у [1]: створюємо нову роль (~користувач)
  • у [2]: створення користувача jpa
  • в [3]: його пароль — jpa
  • у [4]: повторюємо пароль
  • у [5]: надано користувачеві право створювати бази даних
  • у [6]: користувач [jpa] з’являється серед ролей входу

Тепер база даних:

  • у [1]: створюється нове з’єднання з сервером
  • у [2]: вона називатиметься jpa
  • [3]: комп’ютер, до якого потрібно підключитися
  • в [4]: користувач, який підключається
  • en [5]: його пароль. Підтверджуємо налаштування з'єднання за допомогою [OK]
  • у [6]: нове з'єднання створено. Воно належить користувачеві jpa. Тепер він створить нову базу даних:
  • n [1]: додаємо нову базу
  • в [2]: її ім'я — jpa
  • en [3]: її власником є раніше створений користувач jpa. Підтверджуємо за допомогою [OK]
  • у [4]: база даних jpa була створена. Один клік по ній підключає нас до неї та дозволяє ознайомитися з її структурою:
  • en [5]: з’являються об’єкти схеми [jpa], зокрема таблиці. Поки що їх немає. Правий клік дозволить створити їх. Ми залишаємо це на розсуд читача.

Тепер ми створимо ту саму таблицю [ARTICLES], що й у попередньому прикладі з SGBD, використовуючи скрипт SQL [schema-articles.sql], згенерований у розділі 5.4.6.

  • у [1]: відкрити редактор SQL
  • в [2]: відкрити скрипт SQL
  • у [3]: вказати скрипт [schema-articles.sql], створений у пункті 5.4.6.
  • в [4]: скрипт завантажено. Його виконують.
  • в [5]: створено таблицю [ARTICLES].
  • у [6, 7]: його вміст

5.6.5. Драйвер JDBC для PostgreSQL

Драйвер JDBC для PostgreSQL доступний у папці [jdbc] інсталяційної папки PostgreSQL:

Ми розміщуємо архів Jdbc, як і попередні (параграф 5.4.7), у папці <jdbc>:

Для тестування цього драйвера JDBC ми будемо використовувати Eclipse та плагін SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, описаної в розділі 5.4.7. Наводимо кілька показових знімків екрана:

  • у [1]: ми вказали архів драйвера JDBC з PostgreSQL
  • у [2]: драйвер JDBC з PostgreSQL доступний
  • в [3]: визначення з'єднання (user, password)=(jpa, jpa)
  • у [4]: з'єднання активне
  • у [5]: підключено до бази даних
  • у [6]: вміст таблиці [ARTICLES]

5.7. SGBD — Oracle 10g Express

5.7.1. Встановлення

SGBD Oracle 10g Express доступний за посиланням [http://www.oracle.com/technology/software/products/database/xe/index.html]:

  • за посиланням [1]: сайт завантаження Oracle 10g Express
  • за посиланням [2]: виберіть версію для Windows. Після завантаження файлу запустіть його:
  • в [1]: двічі клацніть на файлі [OracleXE.exe]
  • у [2]: перша сторінка майстра встановлення
  • в [3]: погодитися з ліцензією
  • у [4]: погодитися з значеннями за замовчуванням.
  • в [5,6]: користувач SYSTEM матиме пароль system.
  • в [7]: запускається інсталяція

В результаті встановлення Oracle 10g Express створюється папка в [Démarrer / Programmes ]:

Image

5.7.2. Запуск / зупинка Oracle 10g

Як і в попередніх SGBD, Oracle 10g було встановлено як службу Windows з автоматичним запуском. Ми змінюємо цю конфігурацію:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • на [1]: двічі клацаємо на [Services]
  • на [2]: бачимо, що присутня служба з назвою [OracleServiceXE], що вона запущена ([3]) і що її запуск відбувається автоматично ([4]).
  • у [5]: ще одна служба Oracle під назвою «Listener» також активна та запускається автоматично.

Щоб змінити ці налаштування, двічі клацніть на службі [OracleServiceXE]:

  • у [1]: переводимо службу на ручний запуск
  • на [2]: зупиняємо його
  • на [3]: підтверджуємо нову конфігурацію служби

Аналогічно слід вчинити зі службою [OracleXETNSListener] (див. [5] вище). Щоб вручну запустити та зупинити службу OracleServiceXE, можна скористатися ярликами з папки [Oracle]:

  • в [1]: для запуску SGBD
  • на [2]: щоб зупинити його
  • на [3]: для управління (що запускає його, якщо він ще не запущений)

5.7.3. Створення користувача jpa та бази даних jpa

На знімку екрана вище програма [3] дозволяє адмініструвати SGBD Oracle 10g Express. Запустимо SGBD [1], а потім програму адміністрування [3] через меню, показане вище:

  • у [1]: увійти як адміністратор SGBD, тут (system / system)
  • у [2]: створити нового користувача
  • у [4]: ім’я користувача
  • у форматі [5, 6]: його пароль, у даному випадку jpa
  • у [7]: користувач jpa створено

У системі Oracle користувач автоматично пов'язується з базою даних з такою самою назвою. Отже, база даних jpa існує одночасно з користувачем jpa.

5.7.4. Створення таблиці [ARTICLES] у базі даних jpa

OracleXE було встановлено разом із клієнтом SQL, що працює в командному режимі. Працювати зручніше за допомогою SQL Developer, який також надає Oracle. Його можна знайти на сайті:

[http://www.oracle.com/technology/products/database/sql_developer/index.html]

  • [1]: сайт для завантаження
  • [2]: слід вибрати версію для Windows без JRE, якщо він уже встановлений (як у цьому випадку), оскільки [SQL Developer] є Java-додатком.
  • в [3]: розпакуйте завантажений zip-файл
  • [4]: запустити виконуваний файл [sqldeveloper.exe]
  • в [5]: під час першого запуску [SQL Developer] вказати шлях до JRE, встановленого на комп’ютері
  • у [5b]: створити нове з’єднання
  • у [6]: SQL Developer дозволяє підключатися до різних SGBD. Виберіть Oracle.
  • в [7]: ім’я, яке надається з’єднанню, що створюється
  • у [8]: власник з’єднання
  • у [9]: його пароль (jpa)
  • у полі [10]: залишити значення за замовчуванням
  • в [11]: для тестування з’єднання (Oracle має бути запущено)
  • у [12]: для завершення налаштування з’єднання
  • в [13]: об’єкти бази jpa
  • у [14]: можна створювати таблиці. Як і в попередніх випадках, ми створимо таблицю [ARTICLES] на основі скрипта, створеного в розділі 5.4.6.
  • у [15]: відкриваємо скрипт SQL
  • в [16]: вказуємо скрипт SQL, створений у розділі 5.4.6.
  • у [17]: скрипт, який буде виконано
  • в [18]: результат виконання: створено таблицю [ARTICLES]. Двічі клацніть на ній, щоб переглянути її властивості.
  • [19]: вміст таблиці.

5.7.5. Драйвер JDBC для OracleXE

Драйвер JDBC для OracleXE знаходиться у папці [jdbc/lib] в папці інсталяції OracleXE [1]:

Ми розміщуємо архів Jdbc [ojdbc14.jar], як і попередні (параграф 5.4.7), у папці <jdbc> [2]:

Для тестування цього драйвера JDBC ми будемо використовувати Eclipse та плагін SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, описаної в розділі 5.4.7. Наводимо кілька показових знімків екрана:

  • у [1]: вказано архів драйвера JDBC з OracleXE
  • у [2]: драйвер JDBC з OracleXE доступний
  • в [3]: визначення з'єднання (user, password)=(jpa, jpa)
  • у [4]: з'єднання активне
  • у [5]: підключено до бази даних
  • у [6]: вміст таблиці [ARTICLES]

5.8. SGBD SQL Server Express 2005

5.8.1. Встановлення

SGBD SQL Server Express 2005 доступний за адресою [http://msdn.microsoft.com/vstudio/express/sql/download/]:

  • за посиланням [1]: спочатку завантажте та встановіть платформу .NET 2.0
  • за посиланням [2]: потім встановіть та завантажте SQL Server Express 2005
  • у [3]: потім встановити та завантажити SQL Server Management Studio Express, що дозволяє адмініструвати SQL Server

В результаті встановлення SQL Server Express у [Démarrer / Programmes ] створюється папка:

  • у [1]: програма налаштування сервера SQL. Також дозволяє запускати/зупиняти сервер
  • у [2]: програма адміністрування сервера

5.8.2. Запуск / зупинка сервера SQL

Як і в попередніх випадках з SGBD, сервер SQL Express було встановлено як службу Windows з автоматичним запуском. Ми змінюємо цю конфігурацію:

[Démarrer / Panneau de configuration / Performances et maintenance / Outils d'administration / Services ]:

  • на [1]: двічі клацаємо на [Services]
  • у [2]: бачимо, що присутня служба з назвою [SQL Server], що вона запущена ([3]) і що її запуск відбувається автоматично ([4]).
  • у [5]: ще одна служба, пов’язана з SQL Server, під назвою «SQL Server Browser», також активна та запускається автоматично.

Щоб змінити ці налаштування, двічі клацніть на службі [SQL Server]:

  • на [1]: встановлюємо ручний запуск служби
  • на [2]: зупиняємо його
  • на [3]: підтверджуємо нову конфігурацію служби

Аналогічно слід вчинити зі службою [SQL Server Browser] (див. [5] вище). Щоб вручну запустити та зупинити службу SQL server, можна скористатися програмою [1] із папки [SQL server]:

  • у [1]: переконайтеся, що протокол TCP/IP увімкнено (enabled), а потім перейдіть до властивостей протоколу.
  • у [2]: на вкладці [IP Addresses], опція [IPAll]:
    • поле [TCP Dynamic ports] залишається порожнім
    • порт прослуховування сервера встановлено на 1433 у [TCP Port]
  • у [3]: клацнувши правою кнопкою миші на службі [SQL Server], можна отримати доступ до опцій запуску/зупинки сервера. Тут ми запускаємо його.
  • у [4]: сервер SQL запущено

5.8.3. Створення користувача jpa та бази даних jpa

Запустимо SGBD, як зазначено вище, а потім адміністративну програму [1] через меню, показане нижче:

  • у [1]: підключаємося до сервера SQL як адміністратор Windows
  • у [2]: налаштовуємо параметри з’єднання
  • в [3]: вмикаємо змішаний режим підключення до сервера: або за допомогою логіна Windows (користувача Windows), або за допомогою логіна сервера SQL (облікового запису, створеного на сервері SQL, незалежного від будь-якого облікового запису Windows).
  • у [3b]: створюється користувач сервера SQL
  • у [4]: опція [General]
  • у [5]: логін
  • в [6]: пароль (тут jpa)
  • у [7]: опція [Server Roles]
  • у [8]: користувач jpa матиме право створювати бази даних

Підтверджуємо цю конфігурацію:

  • у [9]: користувач jpa створено
  • в [10]: виходимо з системи
  • у [11]: повторно входимо в систему
  • в [12]: вхід під ім'ям користувача jpa/jpa
  • у [13]: після входу користувач jpa створює базу даних
  • у [14]: база матиме назву jpa
  • у [15]: і належатиме користувачеві jpa
  • у [16]: база даних jpa створена

5.8.4. Створення таблиці [ARTICLES] у базі даних jpa

Як і в попередніх прикладах, ми створимо таблицю [ARTICLES] на основі скрипта, створеного в розділі 5.4.6.

  • у [1]: відкриваємо скрипт SQL
  • в [2]: вказуємо скрипт SQL, створений у розділі 5.4.6, сторінка 240.
  • у [3]: потрібно знову авторизуватися (jpa/jpa)
  • в [4]: скрипт, який буде виконано
  • у [5]: вибрати базу даних, у якій буде виконано скрипт
  • у [6]: виконати його
  • у [7]: результат виконання: створено таблицю [ARTICLES].
  • у [8]: запит на перегляд її вмісту
  • у [9]: вміст таблиці.

5.8.5. Драйвер JDBC для SQL Server Express

  • у [1]: пошук у Google за текстом [Microsoft SQL Server 2005 JDBC Driver] приводить нас на сторінку завантаження драйвера JDBC. Вибираємо найновішу версію
  • у форматі [2]: завантажений файл. Двічі клацаємо по ньому. Відбувається розпакування, в результаті чого створюється папка, у якій знаходиться драйвер Jdbc [3]
  • у форматі [4]: розміщуємо архів Jdbc [sqljdbc.jar], як і попередні (параграф 5.4.7), у папці <jdbc>

Щоб протестувати цей драйвер JDBC, ми будемо використовувати Eclipse та плагін SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, викладеної в розділі 5.4.7. Наводимо кілька характерних знімків екрана:

  • у [1]: вказано архів драйвера JDBC із сервера SQL
  • у [2]: драйвер JDBC із сервера SQL доступний
  • в [3]: визначення з'єднання (user, password)=(jpa, jpa)
  • у [4]: з'єднання активне
  • у [5]: підключено до бази даних
  • у [6]: вміст таблиці [ARTICLES]

5.9. SGBD HSQLDB

5.9.1. Встановлення

SGBD HSQLDB доступний за адресою [http://sourceforge.net/projects/hsqldb]. Це SGBD, написаний на Java, дуже компактний у пам’яті, який керує базами даних у пам’яті, а не на диску. Результатом цього є надзвичайно висока швидкість виконання запитів. У цьому полягає його головна перевага. Створені таким чином бази даних в оперативній пам'яті можна відновити після зупинки та повторного запуску сервера. Дійсно, команди SQL, що видаються для створення баз даних, зберігаються у файлі журналу, щоб бути відтвореними під час наступного запуску сервера. Таким чином забезпечується довготривалість баз даних.

Цей метод має свої обмеження, і HSQLDB не є SGBD, призначеним для комерційного використання. Його головна цінність полягає у тестуванні або демонстраційних додатках. Наприклад, те, що HSQLDB написано на Java, дозволяє включати його в завдання Ant (Another Neat Tool) — Java-інструменту для автоматизації завдань. Таким чином, щоденні тестування коду, що перебуває на стадії розробки, автоматизовані за допомогою Ant, зможуть включати тестування баз даних, що управляються SGBD та HSQLDB. Сервер запускатиметься, зупинятиметься та управлятиметься за допомогою завдань Java.

  • у [1]: сайт для завантаження
  • в [2]: завантажити найновішу версію
  • в [3]: розпакувати завантажений zip-файл
  • в [4]: папка [hsqldb], отримана в результаті розпакування
  • в [5]: папку [demo], яка містить скрипт для запуску сервера [hsql] [6], а також [7] — скрипт для запуску простого інструменту адміністрування сервера.

5.9.2. Запуск / зупинка HSQLDB

Щоб запустити сервер HSQLDB, потрібно двічі клацнути на програмі [runManager.bat] [6], показаній вище:

  • у [1]: бачимо, що для зупинки сервера достатньо натиснути Ctrl-C у вікні.

5.9.3. База даних [test]

База даних, що використовується за замовчуванням, знаходиться у папці [data]:

  • у [1]: під час запуску SGBD HSQL виконує скрипт під назвою [test.script]
1
2
3
4
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
  • рядок 1: створюється схема [public]
  • рядок 2: створюється користувач [sa] із порожнім паролем
  • рядок 3: користувач [sa] отримує права адміністратора

У підсумку створено користувача з правами адміністратора. Саме цього користувача ми будемо використовувати надалі.

5.9.4. Драйвер JDBC від HSQL

Драйвер Jdbc для SGBD HSQL знаходиться у папці [lib]:

  • у [1]: архів [hsqldb.jar] містить драйвер JDBC для SGBD та HSQL
  • у [2]: ми розміщуємо цей архів, як і попередні (параграф 5.4.7), у папці <jdbc>

Щоб перевірити цей драйвер JDBC, ми скористаємося Eclipse та плагіном SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, викладеної в розділі 5.4.7. Наводимо кілька показових знімків екрана:

  • у [1]: [window / preferences / SQL Explorer / JDBC Drivers]
  • у [2]: налаштовується сервер [HSQLDB]
  • на [3]: вказуємо архів [hsqldb.jar], що містить драйвер Jdbc
  • у [4]: вказується ім’я Java-класу драйвера JDBC
  • в [5]: драйвер JDBC налаштовано

Після цього здійснюється підключення до сервера HSQL. Його слід запустити заздалегідь.

  • у [6]: створюємо нове з’єднання
  • у [7]: присвоюємо йому ім’я
  • у [8]: потрібно підключитися до сервера HSQLDB
  • у [9]: URL-адреса бази даних, до якої потрібно підключитися. Це буде база [test], яку ми розглядали раніше.
  • у [10]: ми підключаємося як користувач [sa]. Ми бачили, що він є адміністратором SGBD.
  • у [11]: користувач [sa] не має пароля.

Підтверджуємо налаштування з’єднання.

  • у [12]: здійснюємо підключення
  • в [13]: відбувається аутентифікація
  • в [14]: підключено
  • у [15]: схема [PUBLIC] ще не має таблиці
  • в [16]: створюємо таблицю [ARTICLES] на основі скрипта [schema-articles.sql], створеного в розділі 5.4.6.
  • у [17]: вибираємо скрипт
  • у [18]: скрипт, який потрібно виконати
  • щодо [19]: його запускають після видалення всіх коментарів, оскільки HSQLB їх не підтримує.
  • після виконання скрипта оновлюємо у [20] відображення бази даних
  • у [21]: таблиця [ARTICLES] є на місці
  • у [22]: її вміст

Зупинімо, а потім перезапустимо сервер HSQLDB. Після цього переглянемо файл [test.script]:

1
2
3
4
5
6
7
8
9
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE MEMORY TABLE ARTICLES(ID INTEGER NOT NULL,NOM VARCHAR(20) NOT NULL,PRIX DOUBLE NOT NULL,STOCKACTUEL INTEGER NOT NULL,STOCKMINIMUM INTEGER NOT NULL,CONSTRAINT PK_ARTICLES PRIMARY KEY(ID),CONSTRAINT CHK_ID CHECK(ARTICLES.ID>0),CONSTRAINT CHK_PRIX CHECK(ARTICLES.PRIX>0),CONSTRAINT CHK_STOCKACTUEL CHECK(ARTICLES.STOCKACTUEL>0),CONSTRAINT CHK_STOCKMINIMUM CHECK(ARTICLES.STOCKMINIMUM>0),CONSTRAINT CHK_NOM CHECK(ARTICLES.NOM!=''),CONSTRAINT UNQ_NOM UNIQUE(NOM))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
SET SCHEMA PUBLIC
INSERT INTO ARTICLES VALUES(1,'article1',100.0E0,10,1)
INSERT INTO ARTICLES VALUES(2,'article2',200.0E0,20,2)
INSERT INTO ARTICLES VALUES(3,'article3',300.0E0,30,3)

Бачимо, що файл SGBD зберіг різні команди SQL, виконані під час попередньої сесії, і відтворює їх під час запуску нової сесії. Крім того, як видно (рядок 2), таблиця [ARTICLES] створюється в пам’яті (MEMORY). Під час кожної сесії видані команди SQL зберігаються в [test.log], щоб на початку наступної сесії бути скопійованими в [test.script] і відтвореними на початку сесії.

5.10. SGBD — -файл Apache Derby

5.10.1. Встановлення

SGBD Apache Derby доступний за адресою [http://db.apache.org/derby/]. Це SGBD, також написаний на Java і такий самий компактний у пам’яті. Він має переваги, аналогічні до HSQLDB. Його також можна вбудовувати в Java-додатки, c.a.d, де він стає невід’ємною частиною додатка та працює в тому ж JVM.

  • у [1]: сайт для завантаження
  • у [2,3]: завантажте найновішу версію
  • у [3]: розпакувати завантажений zip-файл
  • в [4]: папка [db-derby-*-bin], отримана в результаті розпакування
  • в [5]: папку [bin], яка містить скрипт для запуску сервера [db derby] [6], а також скрипт для його зупинки — [7].

5.10.2. Запуск / зупинка Apache Derby (Db Derby)

Щоб запустити сервер Db Derby, двічі клацніть на програмі [startNetworkServer] [6], показаній вище:

  • у [1]: сервер запущено. Його можна зупинити за допомогою програми [stopNetworkServer] [7], показаної вище.

5.10.3. Драйвер JDBC для Db Derby

Драйвер JDBC для SGBD Db Derby знаходиться у папці [lib] інсталяційного каталогу:

  • у [1]: архів [derbyclient.jar] містить драйвер JDBC для SGBD Db Derby
  • в [2]: цей архів ми розміщуємо, як і попередні (параграф 5.4.7), у папці <jdbc>

Щоб протестувати цей драйвер JDBC, ми будемо використовувати Eclipse та плагін SQL Explorer. Читачеві пропонується дотримуватися покрокової інструкції, описаної в розділі 5.4.7. Наводимо кілька показових знімків екрана:

  • у [1]: [window / preferences / SQL Explorer / JDBC Drivers]
  • у [2]: драйвер Jdbc для Apache Derby відсутній у списку. Його додають.
  • в [3]: присвоюємо ім’я новому драйверу
  • в [4]: уточнюємо формат URL-адрес, що підтримуються драйвером JDBC
  • у [5]: вказано архів .jar драйвера JDBC
  • у [5b]: назва класу Java драйвера JDBC
  • у [5c]: драйвер JDBC налаштовано

Після цього підключаємося до сервера Apache Derby. Його слід запустити заздалегідь.

  • у [6]: створюємо нове з’єднання
  • у [7]: присвоюємо йому ім’я
  • у [8]: намагаємося підключитися до сервера Apache Derby
  • у [9]: URL-адреса бази даних, до якої потрібно підключитися. Після стандартного початку [jdbc:derby://localhost:1527] вказується шлях до папки на диску, що містить базу даних Derby. Параметр [create=true] дозволяє створити цю папку, якщо її ще немає.
  • en [10,11]: підключення здійснюється під ім’ям користувача [jpa/jpa]. Я не досліджував це питання докладно, але, схоже, можна вказати будь-які логін та пароль. Тут вказується власник бази даних, якщо create=true.

Підтверджуємо налаштування з’єднання.

  • у [12]: підключаємося
  • у [13]: авторизуємося (jpa/jpa)
  • у [14]: підключено
  • у [15]: схема [jpa] ще не з’являється.
  • у [16]: створюємо таблицю [ARTICLES] на основі скрипта [schema-articles.sql], створеного в розділі 5.4.6.
  • у [17]: вибираємо скрипт
  • у [18]: скрипт для виконання
  • у [19]: його виконують після видалення всіх коментарів, оскільки Apache Derby, як і HSQLB, їх не підтримує.
  • після виконання скрипта оновлюємо в [20] відображення бази даних
  • у [21]: схема [jpa] і таблиця [ARTICLES] є на місці
  • у [22]: вміст таблиці [ARTICLES]
  • у [23]: вміст папки [derby\jpa], у якій було створено базу даних.

5.11. Фреймворк Spring 2

Фреймворк Spring 2 доступний за адресою [http://www.springframework.org/download]:

  • у [1]: завантажується остання версія
  • у [2]: завантажуємо версію, так звану «з залежностями», оскільки вона містить .jar-архіви сторонніх інструментів, які інтегрує Spring і які нам постійно потрібні.
  • у [3]: розпакуйте завантажений архів
  • en [4]: папка інсталяції Spring 2.1
  • в [5]: у папці <dist> знаходяться архіви Spring. Архів [spring.jar] містить усі класи фреймворку Spring. Вони також доступні за модулями в папці <modules> в [6]. Якщо відомо, які модулі потрібні, їх можна знайти саме тут. Таким чином можна уникнути включення в додаток архівів, які йому не потрібні.
  • у [7]: папка <lib> містить архіви сторонніх інструментів, які використовує Spring
  • у [8]: деякі архіви проєкту [jakarta-commons]

Коли в посібнику використовуються архіви Spring, їх потрібно шукати або в папці <dist>, або в папці <lib> інсталяційного каталогу Spring.

5.12. Контейнер EJB3 від JBoss

Контейнер EJB3 з JBoss доступний за адресою [http://labs.jboss.com/jbossejb3/downloads/embeddableEJB3]:

  • у [1]: завантажуються JBoss та EJB3. Можна звернути увагу на дату випуску продукту (вересень 2006 року), тоді як завантаження відбувається у травні 2007 року. Виникає питання, чи продовжує цей продукт розвиватися.
  • у [2]: завантажений файл
  • у [3]: розпакований zip-файл
  • у [4]: архіви [hibernate-all.jar, jboss-ejb3-all.jar, thirdparty-all.jar] утворюють контейнер EJB3 з JBoss. Їх потрібно додати до classpath додатка, що використовує цей контейнер.