Passaggio alla connessione del database alla libreria

6

Sto scrivendo la libreria java (file jar) per registrare la richiesta di servizio Web e le risposte in un database per l'applicazione interna. Questa libreria avrà due metodi registerReuqest e registerResponse .

Mi chiedo è una buona idea passare la connessione al database a questi metodi di libreria?

Il passaggio alla connessione alla biblioteca avrà alcuni vantaggi e svantaggi.

Pro: È possibile utilizzare una connessione per registrare la richiesta e la risposta, entrambe. Questo ritardo di diminuzione della seconda connessione di apertura. In alcuni casi, il servizio chiamante utilizzerà la stessa connessione.

Contro: il servizio chiamante e la libreria diventano accoppiati.

    
posta mariami 07.04.2017 - 11:45
fonte

3 risposte

4

is it good idea to pass database connection to these library methods?

Contro-domanda: se non passa la connessione, allora come può la biblioteca aprire una connessione al database per sé ?

Quale database?
Come è configurato?
Dove è configurato?

Se queste non sono cose di cui la biblioteca deve preoccuparsi, allora passa una connessione da usare.

    
risposta data 07.04.2017 - 12:29
fonte
2

A giudicare dal tag IoC nella tua domanda, presumo che tu stia utilizzando un contenitore Inversion of Control di qualche tipo, quindi per rispondere alla tua domanda, No non dovresti avere applicazioni che passano direttamente un database connessione alla tua biblioteca.

Invece, dovresti utilizzare l'iniezione di dipendenza. I componenti software che richiedono una connessione al database devono essere costruiti / inizializzati dal tuo contenitore IoC e questo inietterà le dipendenze richieste necessarie dai componenti del software.

Sulle preoccupazioni relative alla contesa sulle connessioni di database, questo è un problema ben risolto utilizzando un pool di connessione al database. Invece di richiedere una connessione al database, è necessario un pool di connessione al database che i componenti software possano richiedere una connessione, quindi tornare al pool una volta terminato. Ciò consente all'applicazione che utilizza la libreria di configurare i dettagli del pool e ottimizzarlo in base alle proprie esigenze. A questo punto non ti preoccupare del problema.

    
risposta data 07.04.2017 - 14:22
fonte
0

L'applicazione chiamante deve passare qualcosa alla libreria, ma tipicamente queste sono proprietà o una configurazione richiesta per creare un'istanza di una connessione che viene utilizzata internamente dalla libreria, ma non dalla connessione stessa. La libreria prenderà la configurazione e creerà la connessione, gestirà la sua durata, ecc. La connessione non dovrebbe essere esposta.

Una configurazione tipica sarà proprietà come:

  • Nome server
  • Port
  • Istanza database
  • ID / Password

La tua applicazione memorizzerebbe le proprietà di connessione nel proprio file di configurazione in quanto sa a quale database ha bisogno di connettersi e passare quella libreria.

Nei tuoi casi, la libreria può gestire internamente la durata della connessione per le chiamate di richiesta / risposta, se necessario.

    
risposta data 07.04.2017 - 21:31
fonte