In der Regel werden Java-Entwickler, die sich in Scala einarbeiten wollen, feststellen, dass man mit viel weniger Quellcode (ohne die Lesbarkeit zu verlieren!) das gleiche erreichen kann, wie in Java. Dies ist fast in allen Bereichen so, aber nur fast. Annotationen sind so ein Bereich, der in Scala leider verkompliziert wurde.

Wer bereits mit JPA gearbeitet hat, der wird um die Annotation Table nicht herumgekommen sein. Möchte man bspw. in einer Tabelle users die Spalten name und surname auf unique setzen, lässt sich das in Java wie folgt schreiben:

@Table(name="users",
uniqueConstraints = {@UniqueConstraint(columnNames={"name", "surname"})}
)

Schon mal versucht diese Annotation in Scala zu schreiben? Die meisten, wie ich zu Beginn auch, werden sicherlich denken, dass man das genau eins zu eins in Scala übernehmen kann. Tja, leider nicht.

Während der Parameter uniqueConstraints der Annotation Table ein Array von UniqueConstraint-Objekten erwartet, ist es bei columnNames der Annotation Uni queConstraint ein Array von Strings. Und genau das erwartet Scala an dieser Stelle:

@Table(name="users",
uniqueConstraints = Array(new UniqueConstraint(columnNames=Array("name",
"surname")))
)

An dieser Stelle geht für mich der Punkt an Java, da der obere Ausdruck einfach kürzer und eleganter ist. Aber auf der anderen Seite existieren sicherlich hunderte anderer Beispiele, wo Java das Nachsehen hat.

blogroll
tags