Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    [JAVA] consiglio progetazione classi che accedono a DB

    salve a tutti,
    ho in testa di progettare un applicativo in Java con DB MySQL, sono un novizio di Java quindi vi volevo chiedere un consiglio...

    premetto sin da ora che ancora non ho visto come effettuare la connessione al DB...

    ho varie classi che devono accedere al DB, mi conviene aprire una connessione per ogni classe oppure aprirne una globale per poi passare come parametro....

    so che magari ciò richiederebbe un discorso un po lungo ma io sono pronto ad ascoltare...

    grazie.
    Let's your dream came true!

  2. #2
    solitamente utilizzo le connessioni al db in pagine jsp o servlet e uso delle classi che permettono di gestire un connection pooling...questo solamente nel caso in cui ho bisogno di prestazioni estreme. In casi d'uso semplici conviene aprire una connessione e chiuderla non appena si è finito.
    Consiglio sempre di crearsi una classe ad hoc per gestire le connessioni al db e non scrivere il codice per le connessioni direttamente nel codice dell'applicazione principale

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Nelle pillole ho postato 2 classi per la connessioni ai DB. Una utilizza JDBC per collegarsi a MySQL, mentre l'altra si connette utilizzando il bridge JDBC-ODBC.

    Puoi darci un'occhiata qui , così hai un punto di partenza per cominciare ad utilizzare i DB nelle tue applicazioni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    grazie ad entrambi delle utilissime risposte, purtroppo le ho potute notare soltanto adesso

    x LeleFT
    ci farò senz'altro un gira nella tua pillola

    xV1RuZ
    in effetti non ci avevo pensato ma potrei fare una classe soltanto che si connette al db, e quindi dove necessario richiamare le varie funzioni della classe che si connette al db...

    giusto?
    Let's your dream came true!

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Secondo me dovresti fare utilizzo, come ha detto viruz, di un connection pool se devi realizzare una applicazione web; altrimenti potresti fare una classe Singleton che accede al DB e che metta a disposizione i metodi per leggere e scrivere dati nel database.
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6
    per ora l'applicazione dovrà essere stand-alone, quindi come inizio la classe che accede al DB va più che bene....

    il mio problema però adesso è il seguente:
    mettiamo che io ho soltanto 3 classi:

    GestoreX
    GestoreY
    ConnessioneDB

    nell'ipotetica classe di avvio mi inzializzo ls classe ConnessioneDB, mentre per le altre 2 classi ad esempio devo fornire dei metodi quali setConnessioneDB dove setto questo alla classe ConnessioneDB il tutto senza eseguire alcuna new.

    lo spazio in memoria sarà riservato per la classe ConnessioneDB mentre per il GestoreX e GestoreY ci saranno soltanto 2 puntatori che faranno riferimento alla classe....

    Giusto?
    Let's your dream came true!

  7. #7
    si na cosa del genere, ma questo solo se vuoi che la connessione venga gestita a livello di classe principale...
    poi tutto dipende da come è strutturata l'applicazione.
    Ogni volta che ho dovuto affrontare la progettazione di un'applicazione che facesse accesso ad un db ho lavorato in modo diverso perchè ogni app è diversa.

  8. #8
    la mia (in breve) è una cosa del genere:

    codice:
    GestoreX
       GestoreA
       GesotreB
    GestoreY
    GesotreZ
    ovvero ci sono tanti gestori, ad esempio di clienti, etc.

    naturalmente i gesotri possono intersecarsi tra di loro, ovvero ad esempio il GesotreX potrebbe richiedere info al GestoreY o anche viceversa,

    non è che ci sia una cosa del tipo GesotreX gestore principale e gestoreY gestore secondario...

    non so se mi sono fatto capire, tutti possono chiedere a tutti, per fare questo io pensavo di istanziarmi a parte la classe per la connessione e poi farci puntare (quando mi serve) i vari gestori...

    come lo vedi?
    Let's your dream came true!

  9. #9
    guarda mi è capitato di fare in questo modo:
    classe DBManager che nel costruttore prendeva i parametri per la connessione e esponeva un metodo getConnection che restituiva una connessione.
    Le azioni da eseguire sulle tabelle venivano mappate attraverso varie classi. Per esempio ho una tabella clienti sulla quale so che devo farci 2 select, una è del tipo select * from client, un'altra del tipo select * from clienti where id = .
    Mi creavo quindi una classe ClientiDB che nel costruttore prendeva una connessione e esponeva 2 metodi del tipo
    getCustomerInfo() e getCustomerInfoWithID(String id). In base alle esigenze questa classe mi ritornava una struttura dati pronta per essere utilizzata....

  10. #10
    perfetto sei stato chiarissimo....

    anche qui in effetti avrei una domanda...

    faccio la mia bella select e presumo il risultato mi sia restituito in una struttura adeguata (ad esempio un recordset o cosa simile) conviene passare come valore di ritorno l'intero recordset oppure ad esempio trasformare il recordset in un vector di oggetti???

    il primo metodo credo sarebbe più veloce, in quanto non devo trascrivere il risultato su un altro oggetto...

    mentre il secondo metodo sarebbe più funzionale, nel senso che ad esempio posso crearmi un vector di oggetti di una ipotetica classe cliente (ad esempio nel tuo esempio) con metodi quali getName() etc...

    voi cosa mi consigliate???

    scusate le numerevoli domande ma questi concetti li ho affrontati soltanto in teoria e poco in pratica ma, visto che so bene che mettere le mani su una cosa ben progettata ci si mette poco, mentre metterle per rifare da capo il ragionamento ci vuole MOOOOOOOLTO preferisco fare qualche domanda in più.
    Let's your dream came true!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.