Типы задач на коллоквиум №2

Все задачи можно решать с использованием: аннотаций JPA (как в примере 2.3 Объектно-реляционное отображение (ORM), Hibernate), либо формата hbm.xml (Hibernate или NHibernate), либо .NET Entity Framework

 

  Файл Изменено
Файл worddavaf7a8aba7c473e6bd978684e79b0bf3c.emf imported from a Word document мар 31, 2012 by Eugene Gavrilov
PNG-файл Class Model.png мар 31, 2012 by Eugene Gavrilov
Текстовый файл hqlsql.txt ноя 29, 2015 by Eugene Gavrilov
Текстовый файл mapping.txt ноя 29, 2015 by Eugene Gavrilov
Текстовый файл hierarchy_sample.txt ноя 29, 2015 by Eugene Gavrilov
Текстовый файл locking.txt ноя 29, 2015 by Eugene Gavrilov
Файл er.erwin ноя 29, 2015 by Eugene Gavrilov
Файл hierarchy.erwin ноя 29, 2015 by Eugene Gavrilov
Файл locking.erwin ноя 29, 2015 by Eugene Gavrilov
Текстовый файл opt_pess_locking.txt ноя 26, 2016 by Eugene Gavrilov
Текстовый файл class_hierarchy_sql.txt ноя 26, 2016 by Eugene Gavrilov
Текстовый файл hql_queries.txt ноя 26, 2016 by Eugene Gavrilov
PNG-файл ER_Hierarchy.png ноя 26, 2016 by Eugene Gavrilov
PNG-файл ER_locking.png ноя 26, 2016 by Eugene Gavrilov

 

  1. Задачи на отображение иерархии классов в реляционную модель.

Дана объектная модель в виде UML диаграммы классов. Требуется спроектировать реляционную модель и написать HQL запросы для выборки всех объектов базового класса и одного из дочерних классов. Также написать SQL-запросы, в которые будут транслироваться HQL запросы.
Всего рассматривается 3 типа отображений иерархий:

  • Single Table
  • Table Per Class
  • Table Per Concrete Class

Прочитать про них можно в любой книге, или документации по ORM-библиотекам, например, по ссылке http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html#inheritance-strategies
Пример иерархии:


2. Задачи на оптимистическую и пессимистическую блокировки для отсоединенной модели.

Данные в заданной таблице может менять множество клиентов одновременно в режиме отсоединенной модели. Требуется предложить решение, позволяющее обнаруживать (оптимистическая) или предотвращать (пессимистическая блокировка) конфликты обновления строк таблицы без или с возможностью изменения структуры таблицы. Написать SQL запросы SELECT и UPDATE для демонстрации подхода.
Для решения задач можно использовать подходы:

  1. Оптимистическая блокировка с проверкой всех полей (update set name=:new_name where id=:id and name=:old_name and …)
  2. Оптимистическая блокировка с добавлением столбца версии или даты последнего обновления (update version = version + 1 where id=:id and version=:version)
  3. Пессимистическая блокировка с добавлением столбцов (кто и когда заблокировал)


3. Задачи на HQL-запросы

Дана объектная схема и соответствующая ей реляционная схема. Напишите запрос на языке HQL и его аналог на SQL.
Все запросы на HQL в этих задачах строятся на основе "точечной нотации" связей ManyToOne.
Например, from CatalogItem as item where item.author.name like :name (для схемы описанной в примере)
Раскрываются в SQL при помощи inner join c соответствующими условиями объединений. SQL можно посмотреть, запустив пример.

 

4. Задачи на проектирование ER-схемы и маппинга

По заданной объектной модели, спроектируйте схему базы данных и Hibernate маппинг в виде XML или аннотаций (атрибутов)
Все схемы – состоят из двух сущностей, связанных OneToMany. Требуется нарисовать соответствующую ER-схему со связью и маппинг (OneToMany с одной стороны, ManyToOne с другой – см. пример Catalog/CatalogItem)

  • Нет меток