Produzione di oggetti JSON da entità JPA nell'API REST

2

Ho un servizio REST che produce JSON e che consuma JSON.

Molto di questo sono semplici operazioni CRUD. La mia idea iniziale era quella di utilizzare semplicemente i DAO direttamente nel controller:

@ResponseBody()
@RequestMapping(value="/cars/{carID}", method = RequestMethod.PUT)
public Car saveCar(@PathVariable Long carId, @RequestBody Car car) {

   carDAO.save(car);

   return car
}

In questo esempio, Car è un% persistente@Entity e il metodo save è solo un wrapper per EntityManger.persist();

Ho sentito che in genere è una cattiva idea utilizzare le classi di persistenza nei controller per la tua API. È vero? Se sì, perché e qual è l'alternativa?

Questa è una buona idea? Ho bisogno di un livello di servizio? Se non quando avrei bisogno?

Supponiamo che l'applicazione cresca e le operazioni diventino ancora più complesse, avrei quindi bisogno di un livello di servizio?

    
posta CodeTower 17.12.2014 - 14:20
fonte

1 risposta

1

Ogni volta che si definisce un'operazione non CRUD, si avrà difficoltà a trovare un metodo HTTP che descriva la stessa cosa. Questo può essere risolto definendo una nuova risorsa. Quindi le risorse REST non possono essere mappate 1: 1 alle entità. Questo è il problema nel tuo caso.

Imho hai bisogno di un modello di dominio che funzioni con le entità e hai bisogno di un metodo di consegna, che trasformi la richiesta HTTP in comandi o query indirizzate al tuo modello di dominio. Se fossi in te controllerei il design del dominio, forse imparerai qualcosa che puoi usare nel tuo progetto.

    
risposta data 18.02.2015 - 15:44
fonte

Leggi altre domande sui tag