JPA Best Practice: Statische Lookup-Entitäten

Vorstellen, eine Veranstaltung - entity-Referenzen eine Status Person:

@Entity
@Table(name = "event")
public class Event()
{
  @Id
  @Column(name = "id", nullable = false)
  private long id;
  ...

  @ManyToOne
  @JoinColumn(name = "status_code", nullable = false)
  private Status status;
}


@Entity
@Table(name = "status")
public class Status()
{
  @Id
  @Column(name = "code", nullable = false)
  private String code;

  @Column(name = "label", nullable = false, updatable = false)
  private String label;
}

Status zugeordnet ist eine kleine Tabelle 'status'. Status ist eine typische Referenz /Daten-lookup-Einheit.

   code  label
   ----- --------------
   CRD   Created
   ITD   Initiated
   PSD   Paused
   CCD   Cancelled
   ABD   Aborted

Ich bin mir nicht sicher, ob es eine gute Idee, Modell Status als eine Einheit. Es fühlt sich eher wie eine Aufzählung von Konstanten,...

Durch die Zuordnung Status als eine Einheit, die ich verwenden kann, Status-Objekte in Java-code, und die Status-Werte sind ebenso in der Datenbank vorhanden. Das ist gut für die Berichterstattung.

Auf der anderen Seite, wenn ich will, um einen bestimmten Status zu einem Event, das kann ich nicht einfach zuweisen, das ständige status habe ich im Hinterkopf. Ich Suche die richtige Person zuerst:

event.setStatus(entityManager.find(Status.class, "CRD"))

Kann ich vermeiden, dass der obige code-fragment? Ich bin affraid, die für eine performance-penalty und es sieht sehr schwer...

  • Tun, ich habe alles perfekt mit nur-lese-Attribute?
  • Kann ich die prefetch diese lookup-Entitäten und verwenden Sie als Konstanten?
  • Fehlte mir eine entscheidende PPV-Funktion?
  • ...?

Alle Meinungen /Anregungen /Empfehlungen sind willkommen!

Danke!
J.

InformationsquelleAutor Jan | 2010-08-31
Schreibe einen Kommentar