Witam. Mam do napisanis aplikacje REST w Spring Boot, z dostepem do bazy danych PostgreSQL za pomoca Hibernate jako provider JPA 2.1 (czyli, mam zamiar uzywac adnotacji JPA a natywnego hibernate poki co nie). Aplikacja bedzie ze soba pakowac Tomcata albo raczej Jetty, bedzie 'headless', tzn. bedzie tylko udostepniac RESTowe zasoby, pobierac i odsylac dane serializowane do JSONa. Teoretycznie moge aplikacje podzielic na wiecej aplikacji (microservice) ktore gadaja ze soba, ale chce zaczac latwo od jednej monolitycznej aplikacji.
Pierwszy raz pisze taka aplikacje, i chcialbym sie dowiedziec jak podzielic to na moduly (ktore ostatecznie i tak wyladuja w jednej aplikacji). Moj pomysl jest taki:

  • modul persistence albo model - tutaj entities JPA plus konfiguracja jpa/hibernate - czy moze lepiej tylko kod a konfig w module ze springiem itp.?
  • modul z restowymi endpointami - ma zaleznosc od poprzedniego modulu z jpa, ale one jakos musza dostac np. referencje do entityManagera i innych beanow - wiec pewnie beda tam adnotacje @Inject czy podobne
  • modul glowny, ktory sklada to wszystko do kupy - tu jest klasa glowna aplikacji, startuje jetty, kontener springa itp., zalezny od 2 pozostalych

Pare pytan:

  • gdzie dac konfiguracje jpa?
  • widzialem w innych appkach u nas ze RESTowe zasoby (te z adnotacjami @Path itp.) mialy metody dostepne na zewnatrz, i w nich cala kupe logiki - zapisywanie danych, odczytywanie itp. Nie podobalo mi sie to, mysalem zeby zrobic raczej tak, ze cala logike beda mialy jakies zwykle springowe beany (nie wiem jak sie one nazywaja - kontrolery?) a RESTowe endpointy tylko je wolaja a odpowiednimi parametrami. Wydaje mi sie to jakies takie czystsze i jak bede chcial napisac jakies serwisy nie-REST, to bede mial juz caly kod do wywolania gotowy - co sadzicie?