Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Базы данных - лекция4 - Объектно-реляционное от...

Anton
October 02, 2018

Базы данных - лекция4 - Объектно-реляционное отображение ORM

Anton

October 02, 2018
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Отображение модели базы данных на объектную модель приложения • Имя

    таблицы ↔ имя класса • Имя колонки ↔ поле класса • Строка таблицы ↔ экземпляр класса (объект)
  2. Сервисные методы: объект-таблица XxxTable • Выборка элементов SELECT → специальные

    методы класса для типовых случаев, возвращают массив объектов или итератор • INSERT/UPDATE/DELETE — аналогично • Инициализация базы и получение объектов- таблиц — объект-одиночка XxxDB
  3. Например • class Student {int id, String name, String group,

    String address} • class StudentTable {insertStudent(Student), deleteStudent(int id), getStudents(String name):List<Student>, getStudents(String group):List<Student>} • class StudentsDB {getInstance(), connect(), getStudentTable():StudentTable}
  4. Лабораторная работа 2.1 • Перевести код из работы 1 (JDBC)

    в код с API DAO • Добавление элементов в базу: cоздаём объект, помещаем в базу через XxxTable.insert • Выборка элементов: через XxxTable.getXxx, итерация по списку объектов
  5. Лабораторная работа 2.2 • Добавьте в базу еще одну таблицу,

    связанную с первой • Обновите API DAO и демо
  6. Лабораторная работа 2.3 • Провести аудит кода DAO на уязвимость

    внедренного SQL-кода • Заменить прямое вклеивание параметров в строки (конкатенацию строк) на механизм PreparedStatement
  7. Java ↔ СУБД • Java ↔ JDBC+SQL ↔ СУБД •

    Java ↔ DAO ↔ СУБД DAO — шаблон проектирования, объектная модель собственной реализации • Java ↔ ORM ↔ СУБД ORM - библиотеки и фреймворки
  8. Другие языки и платформы ru.wikipedia.org/wiki/Список_ORM-библиотек • С++, • Flex, •

    Java, • IOS, • .NET • Delphi • Objective-C • Perl • PHP • Python • Ruby • JavaScript • Smalltalk • Visual Basic
  9. ORM для Java — опираются на механизм @аннотаций @это_таблица public

    class Student { @это_колонка private String name; @это_колонка private String group; }
  10. Лабораторная работа 3 • Перевести код Лабы-2 (DAO с двумя

    таблицами) на механизм ORM • Использовать любой фреймворк, который понравится (ну ладно, рекомендую ORMLite) Как и раньше: • создаем структуру базы • добавляем элементы в таблицы (20-30 элементов, колонки — строки и числа, возможность группировать по повторяющимся значениям и диапазонам) • делаем 2-3 осмысленных запроса