2012-04-13 13 views
1

Ich habe eine String-Eigenschaft einer Entität, die oft von anderen Entitäten wiederholt wird - die würde (in traditionellen Datenbanken) auf eine eigene Tabelle zugeordnet werden.Normalisieren sich wiederholende Werte in Hibernate - Java

Zum Beispiel: Ich könnte eine Kleidungseinheit haben, wobei jedes Kleidungsstück sein eigenes Objekt oder eine eigene Reihe hat. Jeder Artikel wird eine Marke haben, aber diese Marke (String) könnte von vielen anderen Kleidungsstücken wiederholt werden. - Es sollte im Wesentlichen ein manyToOne-Mapping sein, obwohl Marke keine eigenständige Einheit ist, sondern nur ein String.

Wie würde ich das im Winterschlaf tun? Oder sollte ich eher eine Einheit für jede Marke erstellen und ManyToOne verwenden?

Jede Hilfe wird geschätzt!

Antwort

1

Ich denke, nur in Bezug auf database normalization (am speziellsten 3NF), wenn Sie erwarten, dass eine Spalte wiederholte Werte hat, sollten Sie diese Werte in ihre eigene Tabelle exportieren und eine Fremdschlüsselspalte haben. Wenn sich einer dieser Werte ändert, können Sie sie auf einmal ändern.

Das würde Ihnen ermöglichen, ManyToOne auch in Hibernate zu verwenden.

Wenn das jedoch nicht möglich ist, würde ich die Verwendung eines Enum empfehlen.

+0

Wenn Sie mit enum gehen, müssen Sie Ihren Code jedes Mal aktualisieren, wenn Sie eine neue Marke hinzufügen. Eine eigene Marke zu geben könnte mehr Sinn ergeben. –

+0

Was "ɲeuroburɳ" sagt, ist wahr, Enums sind keine gute Option. Ab sofort werde ich ManyToOne verwenden, obwohl ich auf eine Lösung gehofft hatte, die mit einem in eine Entität eingebetteten Objekt vom Werttyp (eingebettet) verknüpft war. – user1260191

+0

Ich würde den enums zustimmen. Normalisieren der Datenbank selbst ist eine viel bessere Option. Ich habe auch über eingebettete Objekte nachgedacht, aber es scheint nicht sehr gut auf Ihr Problem anwendbar zu sein. [Eingebettete Entitäten] (http://schuchert.wikispaces.com/JPA+Tutorial+1++EmbeddedEntity) dienen zum Behandeln mehrerer Spalten, als wären sie ein separates Objekt, das von der umschließenden Entität gehalten wird. Das ist nicht das, wonach du fragst. –