2016-04-25 15 views
1

In unseren Projekten verwenden wir Hibernate HQL und Orika ausgiebig. Dies macht das Refactoring zu einem Problem, da alle Felder, die in Strings im Mapping referenziert werden, beim Bearbeiten eines Feldnamens oder Löschen eines Felds brechen.Java-Feldreferenzen zum Ersetzen fehleranfälliger Strings

Zwei mögliche (Teil-) Lösungen für dieses Problem sind bessere Komponententestabdeckung und bessere IDE-Konfiguration, aber ich würde lieber das Problem im Kern lösen und direkte Feldreferenzen anstelle der Strings verwenden.

Gibt es Frameworks (ähnlich wie beispielsweise Lombok), die die Verwendung von Feldreferenzen in Zuordnungen erleichtern, sodass ein Refactor zu Kompilierzeitfehlern anstelle von Laufzeitfehlern führt?

Update: Ich habe herausgefunden, über den Hibernate Metamodell Generator, der JPA 2 Metamodelle erstellen kann: Vielleicht existiert so etwas auch für nicht DB bezogenen Referenzierung?

Antwort

0

Wenn ich Sie richtig verstanden habe, haben Sie viele HQL-Abfragen im Hibernate, die ungefähr so ​​aussehen: "select fufu_field from myEntityImpl" und Ihr Problem ist, dass wenn Sie den Namen "fufu_filed" in "yoyo_filed" ändern, müssen Sie alle Ihre Abfragezeichenfolgen suchen Ändern Sie die Werte manuell. Und das ist ein Problem. Ich kenne kein Framework, das dieses Problem für Sie lösen könnte, aber ich würde vorschlagen, dass Sie alle Ihre Feldnamen in Static final String Variablen definieren. Also dann in Ihnen dem obigen Beispiel müssen Sie Ihre Abfrage neu schreiben, wie folgt:

final public static String FUFU_FIELD_NAME = "fufu_filed"; 
private String myQuery = "select " + FUFU_FIELD_NAME + " from myEntityImpl"; 

Nun, wenn Sie den Namen ändern, müssen Sie müssen nur thew Wert Ihrer statischen String FUFU_FIELD_NAME Variable an einem Ort ändern , egal wie oft es benutzt wird. Sie können noch weiter gehen und Ihre Namen in den Eigenschaftendateien definieren und sobald Ihr Server auftaucht, kann er die Werte aus der Eigenschaftendatei lesen und Ihre statischen Variablen initialisieren. Auf diese Weise müssen Sie Ihr Projekt nicht erneut kompilieren - ändern Sie einfach Ihre Eigenschaftendatei und starten Sie den Server neu.

+0

Danke Michael für diesen Tipp. Bei Wiederholungen der Feldnamen machen wir oft schon so etwas mit finalen Strings. – Cloud