Міністерство освіти і науки України Національний технічний університет "Харківський політехнічний інститут" Кафедра "Автоматизованих систем керування" Лабораторна робота №5 з курсу "Сервис-ориентированная архитектура" "Добавление классов сущностей и сеансовых компонентов" Виконали: студенти групи ІФ-30А Копп А. М. Крюков І. Д. Перевірив: асс каф. АСУ Власенко О. М. Харків 2013 Тема: добавление классов сущностей и сеансовых компонентов. Цель: использовать технологии технологии Enterprise JavaBeans (EJB) и Java Persistence (JPA). Задание 1. Добавить классы сущностей; 2. Добавить сеансовые компоненты; 3. Осуществить доступ к данным при помощи EJB. Ход работы Добавление классов сущностей Был использован мастер создания классов сущностей из базы данных в среде IDE для создания классов сущностей на основе схемы nationallibrary. После выполнения вышесказанного действия был получен следующий результат: Классы сущностей JPA созданы на основе таблиц базы данных nationallibrary. Классы сущностей находятся в окне "Проекты", в только что созданном пакет entity. Новый блок сохранения состояния появляется в узле "Файлы настройки". Рисунок 1 - Созданные классы сущностей JPA Также, в файл persistence.xml было добавлено следующее свойство: <persistence-unit name="AffableBeanPU" transaction-type="JTA"> <jta-data-source>jdbc/affablebean</jta-data-source> <properties> <property name="eclipselink.logging.level" value="FINEST"/> </properties> </persistence-unit> Параметр протоколирования устанавливается в значение FINEST для просмотра всего вывода поставщика сохранения состояния при запуске приложения. Это позволяет увидеть запросы SQL к базе данных, используемые поставщиком сохранения состояния, и облегчает отладку. Добавление сеансных компонентов Для создания фасада сеанса каждого созданного класса сущностей используем мастер среды IDE "Сеансные компоненты для классов сущностей". В каждом сеансном компоненте содержаться основные методы доступа к соответствующему классу сущностей. После выполнения вышесказанного действия был получен следующий результат: В среде IDE созданы сеансные компоненты для классов сущностей проекта. Они находятся в окне "Проекты", в только что созданном пакет sessions. Рисунок 2 - Созданные сеансные компоненты для классов сущностей проекта. Доступ к данным при помощи EJB В данном разделе был удален код доступа к данным JSTL, написанный ранее для страницы "Index", страницы "Города" и страницы "Библиотеки". Вместо них были использованы методы доступа к данным сеансных компонентов, а данные теперь храняться в контекстных переменных, которые доступны из внешнего интерфейса. Также, были внесены изменения в класс ControllerServlet. Файл index.jsp: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <img src="${initParam.logoImagePath}" id="frontImage"> <div id="indexLeftColumn"> <div id="welcomeText"> <p>Wellcome to the National Technic Library site!</p> </div> </div> <div id="indexRightColumn"> <div class="categoryBox"> <a href="libraries"> <span class="labelText">Libraries</span> </a> <c:forEach var="library" items="${libraries}"> <p><span>${library.libraryName}</span> </c:forEach> </div> <div class="categoryBox"> <a href="cities"> <span class="labelText">Cities</span> </a> <c:forEach var="city" items="${cities}"> <p><span>${city.cityName}</span> </c:forEach> </div> </div> Файл cities.jsp: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%--<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>--%> <p id="slogan">Cities</p> <hr> <%--<sql:query var="result" dataSource="jdbc/nationallibrary"> SELECT * FROM cities </sql:query>--%> <div id="centerColumn"> <c:forEach var="city" items="${cities}"> <div class="elementImageBox"> <span><img src="${initParam.citiesImagePath}/${city.cityImage}"></span> </div> <div class="elementDescriptionBox"> <span>${city.cityName}. ${city.cityDescription}</span> </div> </c:forEach> </div> Файл libraries.jsp: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%--<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>--%> <p id="slogan">Libraries</p> <hr> <%--<sql:query var="result" dataSource="jdbc/nationallibrary"> SELECT * FROM libraries </sql:query>--%> <div id="centerColumn"> <c:forEach var="lib" items="${libraries}"> <div class="elementImageBox"> <span><img src="${initParam.librariesImagePath}/${lib.libraryImage}"></span> </div> <div class="elementDescriptionBox"> <span>${lib.libraryName}, ${lib.libraryAddress}, ${lib.libraryPhoneNumber}</span> </div> </c:forEach> </div> Выводы В результате выполнения данной лабораторной работы были получены практические навыки при работе с технологиями JPA и EJB. Создан набор классов сущностей JPA, предоставляющих реализацию базы данных проектов на уровне Java. Затем в соответствии с шаблоном фасад сеанса создан набор сеансных компонентов EJB, которые расположены выше уровнем, чем классы сущностей, и предоставляют удобный доступ к ним. Также, проект NationalLibrary изменен для того, чтобы использовать новые сеансные компоненты и сущности для доступа к базе данных.
1/--страниц