- •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
14. Кастомизация мэппинга персистентных классов на поля и таблички бд.
Мэппинг пишется в виде xml-файла следующей структуры
<class name="logic.Bus" table="busses">
<id column="bus_id" name="id" type="java.lang.Long">
<generator class="increment"/>
</id>
<property column="number" name="number" type="java.lang.String"/>
<set name="drivers" table="busDriver" lazy="false">
<key column="bus_id"/>
<many-to-many column="driver_id" class="logic.Driver"/>
</set>
</class>
Для того, чтобы не писать полное имя класса, можно указать используемый пакет.
|
name: Полное наименование Java класса персистентного класса или интерфейса. |
|
table: Наименование таблицы БД. Id: описывает идентификатор. Параметр column указывает на какую колонку в таблице будет ссылаться поле id нашего объекта, так же указываем класс и указываем generator, который отвечает за генерацию id. |
|
Property: описывает простое поле нашего объекта, в качестве параметров указываем имя поля, его класс и имя колонки в таблице. |
|
Set: описывает поле в котором содержится некий набор(коллекция) объектов. Тег содержит параметр name - имя поля нашего объекта, параметр table - имя таблицы связи(в случае отношения многие ко многим) и параметр lazy. Так называемые ленивые коллекци. Когда мы в параметре lazy указываем значечение false, то у нас при получении объекта Route из базы вместе с объектом достается и коллекция объектов Bus, так как busses это поле объекта Route. А если в качестве параметра мы указываем значение true, то коллекция объектов Bus не вытаскивается, для ее получения надо явно вызывать метод route.getBusses(). |
|
Тег key имеет параметр column, который говорит, на какую колонку в таблице связи будет ссылаться поле нашего объекта. |
|
Тег many-to-many описывает связь типа многие ко многим, в качестве параметров тег использует column - имя колонки второй колонки в таблице связи и параметр class, указывающий какого класса будут объеты на той стороне. |
15. Объектно-реляционное отображение. Отображение реляционных связей many-to-many, one-to-many, one-to-one.
Many-to-many
<many-to-many
column="column_name" (1)
class="ClassName" (2)
outer-join="true|false|auto" (3)
/>
|
(1) |
column (необязательно): Имя колонки. |
|
(2) |
class (необязательно - по умолчанию определяется рефлексией исходя из типа поля): Имя ассоциированного класса. |
|
(3) |
outer-join (optional - defaults to auto): enables outer-join fetching for this association when hibernate.use_outer_join is set. |
One-to-many
<one-to-many
column="column_name" (1)
class="ClassName" (2)
outer-join="true|false|auto" (3)
/>
|
(1) |
column (необязательно): Имя колонки. |
|
(2) |
class (необязательно - по умолчанию определяется рефлексией исходя из типа поля): Имя ассоциированного класса. |
|
(3) |
outer-join (optional - defaults to auto): enables outer-join fetching for this association when hibernate.use_outer_join is set. |
Many-to-one
Обычная связь с другим персистентным классов объявляется используя элемент many-to-one. В реляционных терминах это ассоциация многих к одному. В действительности это просто ссылка на объект.
<many-to-one
name="propertyName" (1)
column="column_name" (2)
class="ClassName" (3)
cascade="all|none|save-update|delete" (4)
outer-join="true|false|auto" (5)
update="true|false" (6)
insert="true|false" (6)
property-ref="propertyNameFromAssociatedClass" (7)
access="field|property|ClassName" (8)
/>
|
(1) |
name: Имя свойства. |
|
(2) |
column (необязательно): Имя колонки. |
|
(3) |
class (необязательно - по умолчанию тип поля определяется через рефлексию): Имя ассоциированного класса. |
|
(4) |
cascade (необязательно): Определяет, какая операция будет выполняться каскадом от родительского объекта к ассоциированному. |
|
(5) |
outer-join (необязательно - по умолчанию auto): Задействует извлечение ассоциированных объектов, используя объединения outer-join если опция hibernate.use_outer_join конфигурационного файла включена. |
|
(6) |
update, insert (необязательно - по умолчанию true) определяет то, что отображаемые колонки будут включены в SQL-запросы UPDATE и/или INSERT. Установка обоих свойств в false позволяет задавать значение этого свойства либо из другого свойства, которое отображено в той же колонке/колонках, либо посредством триггера, либо другим приложением. |
|
(7) |
property-ref: (необязательно) Имя ключевого свойства ассоциированного класса. По этому свойству будет происходить связывание (join). Если не указано, то используется первичный ключ ассоциированного класса. |
|
(8) |
access (необязательно - по умолчанию property): Стратегия, которую использует Hibernate для доступа к значению данного поля. |
Атрибут cascade может принимать следующие значения: all, save-update, delete, none. Установка значения отличного от none повлечет определенные операции над ассоциированным (дочерним) объектом. Атрибут outer-join может принимать три следующих значения:
-
auto (по умолчанию) извлекает ассоциированные объекты используя outer join если ассоциированный класс не имеет прокси.
-
true Всегда извлекать ассоциированные объекты используя outer join.
-
false Никогда не извлекать ассоциированные объекты используя outer join.
Типичное объявление ассоциации many-to-one выглядит так
<many-to-one name="product" class="Product" column="PRODUCT_ID"/>
One-to-one
Ассоциация "один к одному" с другим персистентным классом можно объявить, используя элемент one-to-one.
<one-to-one
name="propertyName" (1)
class="ClassName" (2)
cascade="all|none|save-update|delete" (3)
constrained="true|false" (4)
outer-join="true|false|auto" (5)
property-ref="propertyNameFromAssociatedClass" (6)
access="field|property|ClassName" (7)
/>
|
(1) |
name: Имя свойства. |
|
(2) |
class (необязательно - по умолчанию определяется рефлексией исходя из типа поля): Имя ассоциированного класса. |
|
(3) |
cascade (необязательно) определяет какая операция будет выполняться каскадом от родительского объекта к ассоциированному. |
|
(4) |
constrained (необязательно) определяет то, что внешний ключ, ссылающийся на таблицу ассоциированного класса, ограничен первичным ключом этой таблицы. Эта опция влияет на порядок, в котором выполняются каскадные операции save() и delete() (а так же используется утилитой экспортирующей схему - schema export tool). |
|
(5) |
outer-join (необязательно - по умолчанию auto): Задействует извлечение ассоциированных объектов, используя объединения outer-join если опция hibernate.use_outer_join конфигурационного файла включена. |
|
(6) |
property-ref: (необязательно) Имя свойства ассоциированного класса, которое входит в первичный ключ данного класса. Если не указано, то используется первичный ключ ассоциированного класса. |
|
(7) |
access (необязательно, по умолчанию property): Стратегия, которую должен использовать Hibernate для доступа к данному полю. |
