Ich versuche, eine Anwendung zu implementieren. In dieser Anwendung habe ich einen Entity-Namen Kommentar, Antwort, Frage. Frage, Antwort und Kommentar hat Kommentare, so dass ich plane, eine kommentable Klasse zu erstellen und alle drei Klassen können kommentarisch erweitert werden. In dieser kommentierbaren Klasse hält es Set, aber ich wundere mich über die Leistung dieser Struktur. Weil es immer eine Join-Abfrage erstellen wird, um Kommentare zu erhalten. Was passiert, wenn ich eine separaten Kommentar Einheit schaffen, die hat commentedObjectId und wenn Kommentare werden auf separate Tabelle make Abfrage benötigt wie, wo commentedObjectId = id?Ist es gute Idee, nur Entity-ID statt Set <Entity> für weniger Betrieb beitreten halten
class Answer extends Commentable{}
class Comment extends Commentable{}
class Question extends Commentable{}
class Commentable extends BaseModel{
@OneToMany
Set<Comment> comments;
public Set<Comments> getComments() {
return comments;
}
public void setComments(Set<Comment> comments) {
this.comments = comments;
}`
Alternative zur Vermeidung von Join-Operationen. Sollte ich die Datenbank so denormalisieren?
class Comment extends BaseModel {
String commentedObjectId;
public String getcommentedObjectId() {
return commentedObjectId;
}
public void setcommentedObjectId(String commentedObjectId) {
this.commentedObjectId = commentedObjectId;
}
}
Vielen Dank für Ihre schnelle Antwort, aber wenn Kommentare zu holen wird es Abfragen machen wieder mitmachen. Wenn der Tag kommt, an dem ich Millionen von Fragen und Millionen von Kommentaren habe. Wie funktioniert diese Join-Abfrage? – ilkerbfl
Noch wird es join sql machen, der Fokuspunkt ist; Ich sollte Denormalisierung für Leistung besser machen? – ilkerbfl