# Wo gehören Annotations hin



## Gast2 (21. Apr 2011)

Hallo zusammen,

mal ne Frage welche Vor und Nachteile gibt es, wenn man z.B. bei JPA-Entities die Annotations an die Member Variablen macht? Oder an die getter Methoden? Oder ist das einfach nur Geschmacksache?


----------



## maki (21. Apr 2011)

IMHO sind die Mappings an den Attributen "passender" als an Methoden.


----------



## Gast2 (21. Apr 2011)

Grund? Übersichtlicher?


----------



## maki (21. Apr 2011)

Naja, beiom Persistieren geht es ja darum, den internen Zustands des Objetkes zu speichern, da sind Methoden ja etwas um die Ecke gedacht 

Dann muss man auch keinen extra Getter schreiben (falls nicht schon vorhanden) und keine Methoden mit Transient annotieren, dafür aber u.U. Attribute mit Transient markieren.

Ist zwar alles Geschmackssache, hat aber natürlich auch Implikationen.


----------



## musiKk (21. Apr 2011)

Ich meine mal eine Präsentation auf infoq.com von einem der Spring-Entwickler(/Gründer?) gesehen zu haben, in dem er sagt, dass solche Informationen an die Methoden sollte, weil das dem objektorientierten Ansatz entspricht. Er hat generell beklagt, dass die Entwicklung (von Java?) diesbezüglich einen unguten Trend hinlegt.

Ich wollte das nochmal verifizieren, um sicherzustellen, dass ich das nicht komplett durcheinander bringe, aber ich finde die Präsentation gerade nicht mehr. Ist schon eine Weile her. Hat mich bisher aber auch nicht davon abgehalten, meistens die Attribute zu annotieren...

_edit_: Habs gefunden, es ist Are we there yet? vom Spring-Gründer Rod Johnson.


----------



## maki (21. Apr 2011)

> er sagt, dass solche Informationen an die Methoden sollte, weil das dem objektorientierten Ansatz entspricht.


Naja, das sehe ich anders, um nicht zu sagen entgegengesetzt.

Wie gesagt, es geht ja um interne Zustände, da brauche ich weder Kapselung noch Information Hiding


----------



## Landei (21. Apr 2011)

Wenn man die Annotation an die Methode macht, braucht man immer auch einen Setter. Read-Only-Felder gehen also nur mit Annotations an Member-Variablen.


----------



## musiKk (21. Apr 2011)

Ich will dazu gar nichts weiter sagen. Das führt ohnehin nur zu den immer gleichen Diskussionen (wie sie ja auch schon hier geführt wurden). Ich muss zugeben, dass ich schon lange darauf gewartet habe, diese Präsentation mal für so ein Argument zu verwenden. Immerhin wird Spring immer als Nonplusultra verkauft und da wird der Gründer ja wohl nicht so falsch liegen. Kannst Dir die Präsentation ja mal anschauen. Dauert aber ne Stunde. Andererseits ist ja auch gerade Ostern...


----------



## maki (21. Apr 2011)

Wollte nicht dir widersprechen, sondern dem Spring Typen  

Finde Spring gut, denke aber dass Spring das es mittlerweile bessere Lösungen gibt wenn es um reine DI geht wie zB. Guice, die aber eben (noch?) nicht das ganze restliche "Ökosystem" mitbringen.


----------



## Gast2 (22. Apr 2011)

maki hat gesagt.:


> Wollte nicht dir widersprechen, sondern dem Spring Typen
> 
> Finde Spring gut, denke aber dass Spring das es mittlerweile bessere Lösungen gibt wenn es um reine DI geht wie zB. Guice, die aber eben (noch?) nicht das ganze restliche "Ökosystem" mitbringen.



Ich schau mir grad das CDI an, muss sagen dass ich es nicht schlecht finde und eigentlich die gleichen Sachen (da geklaut oder abgeschaut  ) kann als Spring, außer dass die Annotations halt anders heißen.
Aber ansonsten wenn man JEE6 verwendet gleich dabei ist und nichts mehr zusätzlich einpflegen muss.


----------



## Gast2 (22. Apr 2011)

maki hat gesagt.:


> Naja, das sehe ich anders, um nicht zu sagen entgegengesetzt.
> 
> Wie gesagt, es geht ja um interne Zustände, da brauche ich weder Kapselung noch Information Hiding



Ja ich finde es jetzt grad bei JPA Annotations sinnvoll, weil da sieht man auf einem Blick welche Variablen in der DB sind und welche nicht, sonst müsste man sich jede get Mehode anschauen und bei großen Klassen kann das schon unübersichtlich sein.


----------

