Jeg begynner å lure på om noen kanskje har vært utydelig da de beskrev denne jobben. Jeg jobber mye med web-applikasjoner selv, og jeg kan ikke helt skjønner hvorfor noen i 2017 ønsker å lage en web-applikasjon bygget med Java. Java kan brukes til mye rart, for all del, men jeg tror det er sannsynlig at det de ønsker er en web-applikasjon bygget med Node.JS (JavaScript), ikke Java. Selv om navnene er like, så er det jo ganske stor forskjell på Java og JavaScript.
JavaScript er et språk som i all hovedsak brukes i front-end av en web-applikasjon. Det vil si at det kjøres i nettleseren til brukeren som besøker nettsiden, og det har da tilgang til å manipulere alle grafiske elementer som brukeren ser. Node.JS er en back-end, en webserver, som bruker JavaScript som sitt programmeringsspråk. En stor fordel med å bruke Node.JS er da at man kan skrive mer eller mindre samme språk for både front- og back-end, noe som ikke var mulig i gamle dager. Alt som foregår back-end har tilgang til å gjøre ting med filer du har på server-maskina di, og det inkluderer typisk databaser.
Om jeg forstår spørsmålet riktig, så vil det være sånn at databasen og SQL hører til det som er back-end. Du skriver kode i Node.JS som sørger for å kjøre SQL-spørringer mot databasen, og hente ut den informasjonen brukeren spør etter. Dette printes da ut til brukeren i form av en nettside i stedet for en terminal.
Nettsider har gjerne en litt anderledes flyt enn et Java-program har (eller et annet PC-program for den del). Forskjellen er at et vanlig program starter opp og går inn i en loop, som holder programmet i live til brukeren velger å avslutte det. Det er relativt vanlig at programmet åpner en tilkobling mot en eventuell database, og holder denne tilkoblingen i live så lenge programmet kjører. Når det kommer til nettsider, så er de gjerne med A til Å-orientert. Brukeren åpner nettsiden, og dette gjør at webserveren din (Node.JS) starter en prosess. Det er ingen loop som holder dette i live, den starter bare på toppen og kjører gjennom helt til den er ferdig med koden sin. Det siste som skjer her er som regel at den ferdige nettsiden sendes tilbake til brukeren og vises i en nettleser. Det betyr at du som regel gjør database-tilkoblinger, SQL-spørringer og deretter avslutter alle ressurser du har brukt hver gang brukeren åpner en ny side (eller refresher siden han/hun står på).
(Og her må jeg hive inn en teknisk kommentar, fordi noen ellers vil pirke på det: Moderne webservere bruker connection-pooling og vil derfor ikke åpne en ny database-tilkobling ved hver eneste page load, men dette er som regel noe som skjer automatisk i bakgrunnen, og derfor ikke noe du trenger å tenke på når du skriver koden. Det vil i mange tilfeller derfor være fordelaktig om du ikke stenger database-tilkoblingene du har brukt. Er litt usikker på hvordan Node.JS håndterer dette, men det finner du sikkert ut av.)
Long story short, dette er en web-applikasjon:
Kode
1 - Brukeren åpner nettleseren sin og går til din nettside
2 - Webserveren din (Node.JS) mottar forespørselen om å åpne nettsiden
3 - Webserveren starter opp filene du har skrevet, og de sørger for å klargjøre informasjon som skal sendes til brukeren. I dette tilfellet så skal du sikkert hente noe info fra en database, så da er det naturlig at koden din åpner en forbindelse til databasen, kjører noen SQL-spørringer og slike ting
4 - Når koden din er ferdig å kjøre sender webserveren den informasjonen du har klargjort tilbake til brukeren
5 - Brukeren får opp nettsiden du har satt sammen i nettleseren sin. Hvis nettsiden inkluderer JavaScript (altså front-end-JavaScript), så vil dette kjøre nå
6 - Alle prosesser er ferdige, brukeren er klar for å trykke seg videre til en annen nettside via en link eller noe sånt
En liten P-PS: MVC er litt oldschool nå. MVVM er det nye. Tåpelige forkortelser, I know, men det går i praksis ut på at du gjør mer behandling av data i front-end enn tidligere, og har en ekte, fungerende view-model i nettleseren. Det er vanlig (og praktisk) å bruke tredjeparts biblioteker for å få til dette. Jeg bruker KnockOut.JS selv, og er storfornøyd med det. Facebook har sitt eget rammeverk som heter React.JS, som er det de bruker på Facebook (obviously). Google har også et eget rammeverk som heter Angular, som antakeligvis er det største og mest populære av dem.