Dieses Blog durchsuchen

Donnerstag, 12. Mai 2011

Lombock - Fast schon eine DSL

Wer kennt das nicht. Eigentlich will ich nur einen Datenhalter haben, der ein 1:1 Mapping mit der Datenbank herstellt. Wer ist da nicht in Versuchung:

public class User {
public Long id;
public String name;
}

Ich habe ein kleines Framework gefunden, welches die Bean-Konventionen transparent setzt: Das Projekt Lobmbock. Just have a look:

@Data
@Entity
public class User {
@Id
@GeneratedValue
private Long id;

private String name;

@OneToMany
private Set roles = new HashSet();
}

Mehr will ich doch gar nicht formulieren. Ich habe zwei Attribute, davon ist eins der Key, außerdem habe ich ein Attribut (name) und eine Relation zu Rollen.

Durch die magic @Data Annotation wird mir jetzt im Bytecode alles generiert, was ich brauche: Getter, Setter, toString, equals .... alles was ich brauche um den Bean-Konventionen genüge zu tun. Und: Weil Eclipse den Syntaxcheck nicht auf Sourceebene sondern auf Ebene der Class-Files macht, läuft der folgende Test auch grün:


@Test
public void registerUser(){
User user = new User();
user.setName("bubu");
userService.register(user);
...
}


Cool. Fast schon eine interne DSL in Java, könnte man meinen. Ich konzentrier mich auf das Wesentliche aber nicht per "Metainformationen" außerhalb des Codes (UML, XML) und "Externen Generator" sondern mit den Sprachkonstrukten, die mir Java dafür bereit stellt. Daraus kann man ein schönes Tutorial für Spring machen. Ich werde das mal angehen, damit ich es nicht vergesse.

Der Geplante Trail:


  • Persistenz mit Daten Transferobjekten und Lombock (DTO)

  • Datenbanktests mit SpringJUnit4 formulieren

  • Konfiguration von Hibernate mit MySQL oder HSQL

  • Datenzugriff mit Data Access Objekten (DAO)

  • Höherwertige Services, die DAO für das Speichern der Daten benutzen

  • Spring Konfiguration für das "verdrahten" von Services (Dependency Injektion).

  • Workflow mit Spring MVC