Kann ich das Builder-Entwurfsmuster zusammen mit dem Ruhezustand verwenden?

8

Angenommen, ich habe diese Klasse:

%Vor%

Kann ich Hibernate-Annotationen verwenden, um sie einer Tabelle zuzuordnen?

    
Yossi 17.01.2011, 13:54
quelle

2 Antworten

5

Ja und nein. Sie können es verwenden, wenn Sie auch Setter bereitstellen.

Hibernate verwendet Java-Beans, um auf die Eigenschaften zuzugreifen. Daher müssen die Methoden getXXX() und setXXX() vorhanden sein. Der ganze Sinn des Builder-Musters (zumindest nach Joshua Bloch) besteht darin, unveränderliche Objekte ohne Setter zu erzeugen. Dies funktioniert nicht mit Hibernate (oder einem ORM), da sie die Setter verwenden, um die Werte zu injizieren.

Wenn Sie jedoch nur Ihre Builder-API als fließende Oberfläche verwenden möchten, um die Objekte zu generieren, während die Getter und Setter intakt bleiben, ist das natürlich kein Nachteil (abgesehen davon, dass es sich um eine Duplizierung von Code handelt).

BTW: Fluent Setter sind keine gültigen Java Beans Setter. Der Mechanismus Introspector versteht sie nicht. Setter müssen einen ungültigen Rückgabetyp haben.

    
Sean Patrick Floyd 17.01.2011 14:18
quelle
4

Der Builder ist ein externer Mechanismus zum Erstellen von Objekten. Es ist ausreichend, dass Sie Ihrer Entität einen Standardkonstruktor zur Verfügung stellen, und es wäre Ihnen egal, wie Sie es erhalten haben. Also ja - es ist möglich, genau wie eine normale Entität.

    
Bozho 17.01.2011 13:58
quelle

Tags und Links