Programmieren war gestern!
In Java Projekten steht man in der Regel vor der Aufgabe Datenobjekte zu speichern, laden oder zu suchen. Dann beginnt der Entwurf der DB und es werden Entity Klassen geschrieben. Danach müssen DAO Klassen entwickelt werden, um die Datenobjekte zu schreiben oder zu lesen. Ist das geschafft benötigt man noch Domain-Services zur Suche der Daten. So wird die Anlage einer neuen Datenbank Tabelle mit allen Implementierungen schnell zur tagesfüllenden Aufgabe.
Spring macht den Datenzugriff mit dem CrudRepository zum Kinderspiel.
Die folgenden drei Code Snippets lösen diese Aufgabe in 10 Minuten.
Zunächst erstellen wir eine Entity Article Klasse mit den Attributen length und size
Über Maven hbm2java lassen wir uns das DB Script zur Erzeugung der DB Tabelle aus der Entity erzeugen.
@Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String length; private String size; .... }
Nun Implementieren wir den DB Zugriff für unsere Entity Article. Hierzu erweitern wir unser Interface ArticleRepository mit dem Spring CrudRepository. Fertig!!
Sie fragen sich wo die Implementierung unseres Interfaces ArticleRepository ist? Diese gibt es nicht! Spring sorgt nun dafür, dass wir die Entity speichern, löschen und laden können.
Das CrudRepository macht noch mehr. Die Definition der Methode findByLengthAndSize im Interface reicht aus, damit wir eine Liste erhalten die über Namenskonventionen alle Datensätze mit den gesuchten Parametern retourniert.
import org.springframework.data.repository.CrudRepository; public interface ArticleRepository extends CrudRepository<Article, Long> { List<Article> findByLength(String length); List<Article> findByLengthAndSize(String length, String size); } Hier sehen wir die Anwendung unseres ArticleRepository im Junit Test public class ArticleRepositoryTest { @Autowired ArticleRepository articleRepository; @Test public void testInsert() { Article article = new Article(); article.setLength("32"); articleRepository.save(article); List<Article> articles = articleRepository.findByLength("32"); Assert.assertTrue(articles.size() == 1); }
Neugierig geworden? Sprechen Sie mich an, wenn Sie effektiver Ihre Entwicklungsabteilung aufstellen wollen.