たとえば、youtubeのビデオページを作成しましょう。ページがレンダリングされた後あなたは、ビデオをupvoteまたはdownvoteし、コメントすることができます。投票などの操作のためにエンティティを保存する方法
私も同様のケースがあります。タイトルと本文(テキスト)で記事が表示されます。私は投票できるようにユーザーのためのオプションを追加したいと思います。二つのエンティティは次のようになります。
public class Article implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private BigInteger id;
private User from;
private String title;
private String body;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "article")
private List<VoteArticle> votes = new ArrayList<>();
public class VoteArticle implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private BigInteger id;
@ManyToOne
@JoinColumn(name = "Article_ID", referencedColumnName = "id")
private Article article;
と私はRequestScoped豆中の記事(JSF私が見上げるビューをレンダリングする前に、記事のid article.xhtml?t=4
としてビューのparamを持つビューとセットアップを持っていますArticleBean)、ビューがレンダリングされます。
私たちは皆、Beanが@RequestScopedなので、すべてのフィールドは次のリクエストごとに再初期化されるため、私たちは皆知っています。だから私の質問は、私は操作(投票、コメント)をする必要があるたびにデータベースから記事エンティティを取得する必要がありますか、それとも良い方法がありますか?
私のソリューションは、パラメータビュー ".xhtml?t"を取得し、新しい記事エンティティを作成し、そのIDを設定して使用することです。
私の解決策に問題がありますか?あなたはそのようなケースをどのように実装しますか?ありがとう。
なぜViewScopedを使用しないのですか? –