Ich habe einige verwandte Fragen durchgesehen, aber ich sehe immer noch nicht viel Unterschied zwischen dem Repository und einer Service-Schicht. Ich nehme an, das Beispiel sollte so aussehen, wenn nicht, bitte sag mir warum?Unterschied zwischen Repository und Service-Layer
public interface ProductRepository extends CrudRepository<Product, Long>{
public List<Product> findByName(String name);
public List<Product> findByPrice(Double price);
}
public interface ProductService {
public List<Product> findAll();
public Product findById(Long id);
public Product save(Product product);
public void delete(Product product);
public List<Product> findByName(String name);
public List<Product> findByPrice(Double price);
}
und die Umsetzung des Product würde die ProductRepository verwenden, um die Methoden zu implementieren. Wie ich aus http://docs.spring.io/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.html verstehe, werden die Abfragen für Methoden aus dem Repository automatisch generiert. In meinem Beispiel werden die Methoden im Repository und Service wiederholt, also bitte erläutern, was/warum geändert werden muss?
Nun, also in meinem Beispiel sind die rep und Service-Schichten korrekt? Und wenn ich Methoden wie validate (Produkt p) habe, sollte es in die Service-Schicht gehen? – April
Es sieht gut aus für mich. Es ist schwer zu sagen, da sie nur Schnittstellen sind, aber basierend auf der Idee, dass Ihr Repo CrudRepo erweitert, von dem ich annahm, dass es einige Funktionen zum Speichern/Aktualisieren/Löschen hat, erscheint das korrekt. Wie für die Validierung, ja, würde ich dies auf der Service-Schicht getan haben. Normalerweise haben wir eine Zwischengeschäftslogik, die solche Dinge behandelt. So ruft zum Beispiel der Service die Geschäftslogik auf, die den Repo aufruft, aber das hängt von der Projektgröße ab. – JasonWilczak