Ho esaminato alcune domande correlate, ma ancora non vedo molta differenza tra un repository e un livello di servizio. Quindi, dato l'esempio, suppongo che dovrebbe assomigliare a questo, in caso contrario, dimmi perché?Differenza tra repository e livello di servizio
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);
}
e l'implementazione del ProductService utilizza il ProductRepository per implementare i metodi. Come ho capito da http://docs.spring.io/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.html le query per i metodi dal repository sono generati automaticamente. Nel mio esempio i metodi sono ripetuti nel repository e nel Servizio, quindi per favore spiega cosa/perché deve essere cambiato?
Bene, quindi nel mio esempio i livelli di servizio e di assistenza sono corretti? E se ho alcuni metodi come ad esempio convalidare (Prodotto p) dovrebbe andare nel livello di servizio? – April
Mi sembra a posto. È difficile da dire, dal momento che sono solo interfacce, ma basate sull'idea che il repository estende CrudRepo, che presumo abbia alcune funzioni di salvataggio/aggiornamento/cancellazione, che sembra corretto. Per quanto riguarda la validazione, sì, vorrei che fosse fatto sul livello di servizio. Di solito abbiamo una logica aziendale intermedia che gestisce cose del genere. Ad esempio, il servizio chiama la logica aziendale che chiama repo, ma dipende dalla dimensione del progetto. – JasonWilczak