Collegare applicazione Java a specifico DBMS

di il
7 risposte

Collegare applicazione Java a specifico DBMS

Ciao a tutti,

sono alle prese con la mia PRIMA applicazione java in cui mi viene richiesto di far inserire dagli utenti delle informazioni che verranno poi salvate in un DB ( nel mio caso PostgreSQL) e successivamente consultabili in qualunque momento da chiunque accede all'applicazione.
Ho capito che tramite JDBC e le query SQL posso creare, modificare, consultare ecc il DB tramite la mia applicazione e l'ho fatto.

Adesso mi sorge invece un dubbio.. il mio database è in locale, nel momento in cui avvio l'applicazione su un altro computer, non avendo su quest'ultimo il database utilizzato, ovviamente non trova i dati precedentemente inseriti.. insomma, è inutile.

come posso fare in modo che chiunque utilizzi l'app, si colleghi ad uno specifico DB contenente le informazioni?
EDIT: utilizzo Intellij e il progetto è basato su Maven

sono nuovissimo a questi temi e probabilmente mi sono anche espresso male.. siate clementi perfavore

grazie mille in anticipo
ciao!

7 Risposte

  • Re: Collegare applicazione Java a specifico DBMS

    affamato ha scritto:


    sono alle prese con la mia PRIMA applicazione java

    come posso fare in modo che chiunque utilizzi l'app, si colleghi ad uno specifico DB contenente le informazioni?
    C'è innanzitutto da chiarire che TIPO di applicazione si tratta. Parlando di "prima" applicazione, presumo e immagino che si tratti di una semplice applicazione "console" o forse "grafica" (Swing?).

    Ad ogni modo, devi solo stabilire DOVE deve stare il db rispetto alla applicazione. Su una rete LAN "locale" il db potrebbe benissimo stare sulla macchina A e la tua applicazione girare sulle macchine B, C, D, ecc... Chiaramente a patto che sia tutto configurato per "esporre" il server PostgreSQL sulla rete LAN.
  • Re: Collegare applicazione Java a specifico DBMS

    Al database PostgreSQL ti stai connettendo mediante un drive JDBC e da qualche parte hai configurato la JDBC url, ed avrai scritto una cosa del tipo:
    
    jdbc:postgresql:database
    
    Questa e' SOLO LA VERSIONE SUPER SEMPLIFICATA della JDBC URL per PostgresSQL.
    La VERA url e':

    https://jdbc.postgresql.org/documentation/80/connect.html

    in cui specifichi ESATTAMENTE

    - IP della macchina su cui PostgreSQL e' connesso
    - PORTA su cui PostgreSQL e' in ascolo per fornire i servizi
    - database a cui connetersi
    - un sacco di altri parametri di configurazione
  • Re: Collegare applicazione Java a specifico DBMS

    Esattamente! penso che abbiate quasi del tutto risposto al mio dubbio.

    per rispondere a andbin si, l'applicazione è grafica swing.

    quindi da quanto ho capito, per poter far " girare " correttamente tutto il meccanismo, devo modificare la mia JDBC url e fare in modo che il mio database sia raggiungibile da qualunque pc..? ho capito giusto?
    Siccome la mia applicazione sarà visionata e valutata da un professore ( a casa sua ), immagino che dovrò utilizzare questo metodo. ( confermate?)

    EDIT questo è il collegamento JDBC che utilizzo al momento:
    String jdbcURL="jdbc:postgresql://localhost:5432/CV";
    grazie mille!
  • Re: Collegare applicazione Java a specifico DBMS

    affamato ha scritto:


    Siccome la mia applicazione sarà visionata e valutata da un professore ( a casa sua )
    La questione è molto semplice: tu sai dove ha il db questo professore a casa SUA? Cioè sai se ha il db sulla stessa macchina dove prova l'applicazione ... o è su un'altra macchina?? Probabilmente non lo sai .....
    Se nel codice hai "schiantato" fisso localhost, è probabile che va bene. Se gli passi i sorgenti al massimo dovrà sapere LUI (il professore) di mettere es. un altro indirizzo IP di un'altra sua macchina e ricompilare. Questo è sostanzialmente un non-problema se non hai informazioni più dettagliate. Insomma, non è un problema tuo.
    Al massimo invece che "cablare" l'hostname nel sorgente potresti renderlo più facilmente configurabile (parametro da linea comando, file configurazione ecc...)
  • Re: Collegare applicazione Java a specifico DBMS

    Perdonami andbin ma credo di non aver capito bene il funzionamento del tutto..

    quello che vorrei che succedesse è che io popolo il database A con varie informazioni.

    una volta inviata l'applicazione a chiunque, qualunque persona, avviandola, si colleghi al database A e possa effettuare operazioni di visualizzazione delle informazioni già esistenti, inserimento di nuove informazioni o cancellazione. Queste modifiche sono poi visibili a chiunque avvia l'applicazione e si collega al database A.

    come si crea un sistema del genere? non penso che utilizzando il " localhost" possa avvenire una cosa del genere ma è molto probabile che mi stia sbagliando visto che è la prima volta per me.

    Potreste schiarirmi le idee per favore?

    grazie mille
  • Re: Collegare applicazione Java a specifico DBMS

    La stringa JDBC

    NON DEVE ESSERE NEL CODICE!!

    DEVE essere letta da un file di configurazione!
  • Re: Collegare applicazione Java a specifico DBMS

    affamato ha scritto:


    non penso che utilizzando il " localhost" possa avvenire una cosa del genere
    Se tieni applicazione e DB sulla tua stessa macchina e quindi il PostgreSQL risponde solo sul "localhost", è ovvio che può andare bene solo per te e non per "altri" (che magari sono su una stessa rete LAN).

    Ma come ho detto prima, la tua applicazione e il PostgreSQL possono anche stare su due macchine DIVERSE.
     +-------+           +------------+
     |  TUA  |    LAN    |porta       |
     |  APP  |---------->|5432--->DB  |
     |       |           |            |
     +-------+           +------------+
    macchina B             macchina A
    In uno scenario del genere, la cosa importante è assicurarsi che la porta 5432 (del PostgreSQL) sulla macchina A sia accessibile da altre macchine sulla stessa rete (B anche C, D, ecc....). Significa avere il pieno controllo della infrastruttura di rete: router, firewall (hw e/o sw) e quant'altro. È una questione solamente "sistemistica", di amministrazione delle reti. Non c'entra più niente con la programmazione.
Devi accedere o registrarti per scrivere nel forum
7 risposte