
- •1. Жизненный цикл приложения Java. Компиляция. JiTкомпиляция. Исполнение.
- •2. Классы. Абстрактные классы. Интерфейсы. Наследование.
- •3. Классы и интерфейсы стандартной библиотеки. Списки. Сортировка.
- •4. Классы и интерфейсы стандартной библиотеки. Ассоциированные массивы. Словари.
- •5. Классы и интерфейсы стандартной библиотеки. Потоки ввода-вывода. Файловый ввод-вывод.
- •6. Параллельные процессы. Синхронизация.
- •Синхронизация по ресурсам и событиям
- •Синхронизация по ресурсам
- •Синхронизация по событиям
- •7. Параллельные процессы. Управление потоками.
- •Создание и запуск потока выполнения
- •Поля и методы, заданные в классе Thread
- •Важнейшие константы и методы класса Thread:
- •Важнейшие методы объектов типа Thread:
- •8. Параллельные процессы. Управление памятью потока.
- •Хранение переменных в памяти
- •Блокировки
- •9. Jdbc, драйверы строка соединения, класс DriverManager, интерфейс Connection.
- •10. Jdbc, создание sql запросов, интерфейсы Statement, PreparedStatement Класс Statement.
- •Выполнение запроса через объект Statement
- •Закрытие объектов Statement
- •11. Jdbc, обработка полученных результатов, интерфейсы ResultSet, ResultSetMetaData.
- •Строки и курсоры
- •Колонки
- •Типы данных и их преобразование
- •Использование потоков для очень больших значений
- •Значения null в результатах
- •12. Объектно-реляционное отображение. Создание персистентных классов при помощи jpa
- •13. Объектно-реляционное отображение. Подключаемы провайдеры персистенции.
- •14. Кастомизация мэппинга персистентных классов на поля и таблички бд.
- •15. Объектно-реляционное отображение. Отображение реляционных связей many-to-many, one-to-many, one-to-one.
- •16. Объектно-реляционное отображение. Жизненный цикл персистентных объектов (entity lifecycle)
- •17. Объектно-реляционное отображение. Интерфейс EntityManager.
- •18. Объектно-реляционное отображение. Создание запросов на jpql, sql
- •19. Работа с xml в Java. Правильно сформированные (well-formed) и корректные (valid) xml документы
- •Понятие корректно сформированных (well-formed) xml-документов
- •Создание действительных (valid) xml-документов. Определение типа документа (dtd)
- •20. Jaxp, основные группы api.
- •21. Работа с xml документами посредством sax.
- •22. Работа с xml документами посредством dom.
- •23. Сравнение sax и dom подходов к обработке xml документов.
- •24. Jaxb, отображение Java класса, отображаемого на xml.
- •25. Создание jaxb контекста, маршалинг и демаршалинг.
- •26. Сервлеты, создание, жизненный цикл
- •27. Http запросы get, post, put, delete, head
- •28. Интерфейс servlet, класс HttpServlet
- •29. Создание rest сервисов, jax rs
- •30. Связка jaxb и jax rs, переключение типов возвращаемого контента (xml, json)
- •33. Оптимизация jvm
13. Объектно-реляционное отображение. Подключаемы провайдеры персистенции.
ORM берет на себя “превращение” таблицы в объект.
Технология JPA является абстракцией над JDBC и позволяет быть независимым от SQL. Все классы и интерфейсы JPA расположены в пакете javax.persistence, основными составляющими технологии являются:
-
ORM (механизм объектно-реляционного отображения);
-
Entity manager API — позволяет осуществлять базовые операции CRUD;
-
JPQL и Criteria API — механизмы извлечения данных;
-
Управление транзакциями и блокировками (как с использованием JTA, так и без);
-
Механизмы обратных вызовов и listener-ов.
<?xml version="1.0" ?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="Наименование Persistence Unit-a" transaction-type="тип транзакции">
<provider>наименование провайдера, например оrg.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>наименование источника данных</jta-data-source>
<properties>
Тут определяются специфические для провайдера свойства, например
<property name="openjpa.ConnectionDriverName" value="oracle.jdbc.OracleDriver"/>
</properties>
</persistence-unit>
</persistence>
Наименование Persistence Unit-a - это именование экземпляра Unit-a на сервере приложения. По этому имени в дальнейшем нужно будет получать Enterprise Manager-ы. Enterprise Manager - это объект, который выполняет управление всеми процессами JPA для данного Unit-a.
Тип транзакции - Наименование типа транзакции. JPA технология поддерживает работу с транзакциями СУБД на разных уровнях. Для источников данных расположенных на сервере приложений необходимо использовать значение JPA для типа транзакции. В этом случае следить за своевременными выполнениями commit и rollback процедурами будет контейнер (он же сервер приложений). В этом случае, однако усложняется "ручное" влияние на эти процессы.
Наименование провайдера - это наименование класса-реализации JPA. Т.к. в J2EE используется только описание JPA, то конкретная реализация возлагается на плечи сторонних разработчиков. Тут выделяются Toplink, Hibernate, OpenJPA и т.д. Рекомендуется использовать Hibernate, т.к. это наиболее используемая технология. Однако в зависимости от сервера приложений такое предпочтение может меняться. Например, в состав сервера приложений уже входит некоторая реализация JPA.
Наименование источника данных - JNDI имя источника данных (Data Source), объявленного на сервере приложений. Существует возможность объявить набор источников данных на сервере приложений и возложить задачу манипулирования драйверами, пулами соединений и другими сопутствующими объектами на сервер приложений. Это существенно упрощает разработку. В таком случае, нам необходимо только лишь обратиться к заранее подготовленному источнику.
Свойства провайдера - эти свойства могут сильно отличаться в зависимости от используемого провайдера. Общие рекомендации указать нельзя, необходимо читать документацию конкретного выбранного провайдера. Для провайдера в примере мы указываем драйвер, с помощью которого тот должен общаться с СУБД.