Sto eseguendo il porting di un'API RESTful di un'applicazione esistente su un framework web Java - non mi interessa davvero quale - ma è difficile ottenere le basi giuste.
Il nocciolo del problema sembra essere il ponte tra JAX-RS e il database in modo che le transazioni funzionino. L'API usa molto subresources e il modo in cui JAX-RS sembra funzionare implica la restituzione di un nuovo localizzatore. Questo è un buon modello, ma significa che non esiste un vincolo efficace sulla transazione, quindi le annotazioni @Transactional diventano un problema. Mi piacerebbe che fossero soddisfatti in qualche modo della richiesta, ma nessuno dei framework che ho provato sembra renderlo così facile, o persino possibile.
È una specie di problema con tre corpi. Posso fare transazioni e query bene spingendole in un livello di repository, ma poi non dovrei usare subresources. O posso fare subresources e anche query piacevolmente ma poi non c'è nulla di bello per le transazioni. Fondamentalmente posso avere due transazioni, sottorisorse e query complesse, ma ho bisogno di tutte e tre le cose.
Finora, ho provato a farlo funzionare con Guice + Jersey + Querydsl e con Spring Data e Spring REST. Sembrano tutti interamente basati sull'idea che ciascun endpoint possa essere @Transactional e (di solito) che sia una semplice API CRUD sulle tabelle. Ho un front-end molto bello già costruito. e non vedo alcun motivo valido per riscriverlo completamente perché Java rende i servizi difficili da creare.
So che in qualche modo ho bisogno di ottenere le transazioni legate alla richiesta, e comunque uso DTO, quindi sono contento di ciò, ma non riesco a trovare alcun modo per farlo. Qualcuno ha utili indicazioni, modelli, consigli?