Реализация кнопки «Мне нравится» в Spring Boot - PullRequest
0 голосов
/ 24 мая 2018

В моем приложении пользователи могут публиковать статьи.И другим пользователям могут понравиться эти статьи.

Класс статьи:

@Entity
public class Article {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "article_id")
    private int id;

    @Column(name = "article_title")
    private String articleTitle;

    @OneToMany(mappedBy = "event")
    private List<PeopleWhoLiked> peopleWhoLiked;
}

@Entity
public class PeopleWhoLiked {
    @EmbeddedId
    private PeopleWhoLiked id;
    @ManyToOne @MapsId("articleId")
    private Article article;
    @ManyToOne @MapsId("userId")
    private User user;
}

И есть категория объекта. Каждая статья имеет одну категорию.

public class Category {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "category_id")
    private int id;

    @NotEmpty
    @Column(name = "categoryName")
    private String categoryName;

    @OneToMany(mappedBy = "article")
    private List<Article> articleList;
}

My Like Table

Article_id User_id
x          x

Оба являются внешними ключами для связанных таблиц.

С функцией category.getArticleList(); я могу показывать статьи пользователям. Им могут нравиться статьи. Но дело в том, что система неЗнайте, что если статья уже понравилась пользователю.Так что всегда кнопка «Мне нравится» активна.

Запрос (оператор выбора для каждой статьи в таблице «Мне нравится»), похоже, имеет огромную сложность по времени и перегрузку системы.) Даже если я делаю, как я могу опубликовать это в тимелеф th:each оператор только с Article объектом.

Я думаю, что запрос 10 статей как за один раз с одним оператором select звучит хорошо. Но опять же, как я могу передать это тимелисту с объектом Article.

1 Ответ

0 голосов
/ 24 мая 2018

Ваша проблема с производительностью вызвана дополнительным запросом для каждой строки.

Для 1 выбора, возвращающего 100 строк, вы делаете дополнительные 100 выбора для базы данных.

Если вам нужно отобразить сложное представление построения результатаи затем сопоставить результат просмотра с вашим классом @Entity, который будет использоваться только для целей презентации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...