Blog

Vielleicht sind Anmerkungen doch nicht so schlecht

Vincent Partington

Aktualisiert Oktober 23, 2025
3 Minuten

Vor zwei Jahren habe ich in einem Blog über Anmerkungen geschrieben und dass ich sie für eine schlechte Sache halte. Es scheint, als müsste ich meine Worte essen. In meinem aktuellen Projekt verwende ich sie tatsächlich bis zum Anschlag.Wir verwenden JPA und spezielle Hibernate-Annotationen für unsere Entitäten. Sehen Sie sich zum Beispiel diese Annotationen zu einem Feld an: @OneToMany(mappedBy = "changePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN) @org.hibernate.annotations.Sort(type = org.hibernate.annotations.SortType.COMPARATOR, comparator = PositionableComparator.class) private SortedSet steps = new TreeSet(new PositionableComparator());

Wir verwenden JUnit 4 und Spring 2.0-Annotationen für unsere Testklassen: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/spring/ad-core-context-common.xml", "/spring/ad-core-context-test.xml", "/spring/ad-cli-context-test.xml" }) @TransactionConfiguration(defaultRollback = true) @TestExecutionListeners(value = { TransactionalTestExecutionListener.class, DependencyInjectionTestExecutionListener.class }) public class AutomatedDeploymentServicesComponentTest { ... Und wir haben sogar eine eigene Annotation eingeführt, um die Felder in unserer Datenbank zu beschreiben: @ConfigurationItemProperty(required = true, description = "Name of the WebSphere Application Server. Valid examples; MyServer, Server01") private String name; Es stellt sich heraus, dass Annotationen zwar Ihren Code unübersichtlich machen und Ihren Code an bestimmte Frameworks usw. binden können, dass sie aber auch einige nützliche Eigenschaften haben:

  • Anmerkungen ersparen Ihnen das Schreiben von (weiteren) XML-Metadaten, wie z. B. Hibernate-Mapping-Dateien und Spring-Kontextdateien.
  • Mit Hilfe von Anmerkungen können Personen, die den Code lesen, die Metadaten sofort sehen, ohne sie in anderen Dateien suchen zu müssen.
  • Anmerkungen werden automatisch verschoben, wenn Sie Code refaktorisieren.
  • Anmerkungen werden automatisch entfernt, wenn Sie den Code entfernen.
  • Wenn Sie eine Klasse oder ein Feld umbenennen, müssen Sie die externen Metadaten nicht ändern.

Kurz gesagt, Annotationen verringern den Abstand zwischen Ihrem Code und seinen Metadaten. Und das ist eine gute Sache. ;-) Und was die Nachteile angeht, die ich in meinem Blog erwähnt habe:

  • Dass Sie die Annotationsklassen benötigen, um Ihren Code zu kompilieren, scheint nicht so schlimm zu sein. Warum sollten Sie die von Ihnen verwendeten Frameworks nicht in Ihrem Klassenpfad haben?
  • Die Syntax ist also nicht so toll? Sie ist nicht so schlecht wie XML. Und zumindest bietet Eclipse eine schöne Syntaxeinfärbung.
  • Die meisten der in Anmerkungen gespeicherten Konfigurationsdaten sind ziemlich statisch, so dass eine Neukompilierung bei Änderungen nicht so schlimm ist. Wie oft ordnen Sie zum Beispiel Ihre Entitäten neu zu, ohne auch eine neue Version Ihrer Software zu veröffentlichen?
  • Die Verwendung der gleichen Klassen mit mehreren Konfigurationen ist immer noch ein Problem. JPA verfügt beispielsweise auch über die Datei orm.xml, um die Entitätskonfiguration bereitzustellen/zu überschreiben. Aber das ist keine generische Lösung.

Die eigentliche Schlussfolgerung hier ist also, dass grobe Verallgemeinerungen Sie später in Verlegenheit bringen können. Wie immer: Es kommt darauf an.

Verfasst von

Vincent Partington

Contact

Let’s discuss how we can support your journey.