FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

java-labs/java-web-ru/orm at main · vmorkhat/java-labs · GitHub

Latest commit

 

History

History

README.md

ORM

ORM (Object-Relation Mapping) – общее название для фреймворков, позволяющих автоматически связать базу данных с кодом. Они стараются скрыть существование базы данных настолько, насколько это возможно. Взамен, программисту дают возможность оперировать данными в базе через специальный интерфейс. Вместо построения SQL-запросов, программист вызывает простые методы, а всю остальную работу берёт на себя ORM.

Сущности предметной области существуют не сами по себе. Они часто зависят друг от друга. В этом домашнем задании мы будем работать с двумя связанными сущностями — с категориями и статьями. Категории связанны со статьями связью "один ко многим". Одна категория может содержать множество статей, но любая статья всегда находится только в одной категории.

Ссылки

src/main/resources/application.yml

Задачи

  • Изучите содержимое файла application.yml, в котором происходит настройка ORM. Обратите внимание на комментарии.

src/main/java/exercise/domain/Category.java

Модель — это воплощение понятия предметной области в коде приложения. В Ebean каждая модель представлена классом в коде и таблицей в базе данных.

Задачи

  • Изучите класс Category, который представляет собой модель категории. Обратите внимание, что модель наследуется от класса io.ebean.Model. Благодаря этому на модели можно вызывать метод save() для сохранения данных в базу. Изучите аннотации, которыми отмечены класс и поля класса.

src/main/java/exercise/domain/Article.java

Задачи

  • Допишите модель статьи Article.

    • Создайте в классе конструктор, который принимает в качестве аргументов название статьи, её содержание и категорию статьи.

      Category category = ... // получаем категорию из базы
      String title = "New article";
      String body = "Text of article";
      Article article = new Article(title, body, category);
    • Создайте геттеры для получения значения всех полей: getId(), getTitle(), getBody(), getCategory().

src/main/java/exercise/MigrationGenerator.java

Миграция в ORM — это файл, который содержит SQL-запросы, создающие схему базы данных. ORM позволяет автоматически генерировать миграции на основании моделей. Для этого нужен файл MigrationGenerator.java.

  • Изучите код в этом файле.

  • Изучите таску Gragle generateMigrations в файле build.gradle, которая запускает создание миграций.

  • При помощи команды gradle generateMigrations сгенерируйте миграции. Изучите получившиеся файлы миграции в директории src/main/java/exercise/resources/dbmigration.

src/main/java/exercise/servlet/ArticlesServlet.java

Задачи

  • Допишите метод showArticles(), который выводит список статей с пейджингом. Статьи должны быть отсортированы по id в порядке возрастания. В одном из предыдущих заданий мы формировали такой запрос вручную. Теперь сделайте это при помощи ORM. Для этого вам понадобится интерфейс PagedList. Получите из базы список List статей Article и установите его в качестве значения для атрибута "articles".

  • Допишите метод showAricle(), который выводит страницу просмотра статьи. При помощи ORM получите из базы данных статью Article по её id и установите её в качестве значения для атрибута "article".

  • Допишите метод newArticle(), который выводит страницу создания новой статьи. При создании новой статьи нужно будет указать категорию, к которой эта статья относится. Для этого нужно передать в шаблон список категорий. Получите список List всех категорий Category и установите его в качестве значения для атрибута "categories".

  • Допишите метод createArticle(), который создаёт новую статью и добавляет её в базу данных. Для создания статьи используйте созданный ранее конструктор.

src/main/webapp/WEB-INF/articles/show.html

Задачи

  • На странице просмотра статьи реализуйте вывод названия категории, которой принадлежит статья.

Подсказки

  • Чтобы получить список статей List из PagedList, воспользуйтесь методом getList()
  • Изучите файл с примерами Examples/Example.java.

Back | FazBrowse Home | New Git URL