Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Database, Java implementazione classe

    Salve ragazzi, avrei da porvi una domanda.

    Ho (o meglio sto) realizzando una applicazione java che comunica con un database da me realizzato in MySql.

    La connessione al database l'ho realizzata attraverso una pillola presente sul vostro sito.

    Purtroppo prima di realizzare applicazioni in Java programmava in VisualBasic (programmazione procedurale) mentre vorrei finalmetne passarea alla programmazione orientata algi oggetti che consente java.

    Quindi per fare ciò se non erro dovrei creare una classe per ogni mia tabella del database ed interagire con essa????? però non so come partire mi potreste indicare qualche esempio o qualche link di una cosa simile già sviluppata????

    Grazie per le risposte.

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    più che con ogni tabella, dovresti interagire con ogni oggetto che vai a salvare nel database....ad esempio, se tu salvi dati anagrafici, abitudini alimentari sul cliente X. potrebbe anche capitare che queste due tipologie di informazioni siano raccolte in tabelle diverse ma, se ti serve inserirle, modificarle o recuperarle entrambe nello stesso momento e non ti capiterà mai di dover usare solo un tipo o solo l'latro di informazioni, allora è opportuno che facciano parte dello stesso oggetto. Inoltre, come consiglio personale, creati una classe che io in genere chiamo DBMapper dove mi salvo per ogni costante il nome del db...esempio
    codice:
    final String nomeDelCliente = "tabellaAnagrafica.nome"
    final String cognomeDelCliente = "tabellaAnagrafica.cognome"
    in modo che, se dovesse cambiare la struttura del db, ti basterebbe cambiaresolo quella classe per modificare tutti i puntatori alle varie celle del db.
    Ultima cosa, non meno importante che io faccio in genere è crearmi una classe DBManager che abbia tanti metodi quante sono le varie tipologie di query che vado a fare. Io lo trovo utile perchè facendo interagire la GUI con il db, se cambia il db, andar a mettere mano a tutti i file della GUI può essere molto irritante...nel DBManager in genere metto metodi come
    codice:
    recuperaTuttiClienti()
    recuperaClientiVecchi()
    recuperaClientiBimbi()
    inserisciCliente(Cliente c)
    modificaEtà(Cliente c, int eta)
    e così via...per ogni nuova interazione con la base di dati vado ad aggiungere il metodo che mi serve aggiungendolo a questa classe.

    Spero di essere stato d'aiuto

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Si ho capito qualcosa... Comunque:

    io ho questo ho un database composto da 10 tabelle.

    prendo una tabella a caso

    INGREDIENTI(CodiceIngr, Descrizione, Zucchero,Grasso,Solidi,AltriSolidi,Prezzo,Tipologi a)

    ora io su queta tabella le operazioni che faccio sono di inserimento modifica ed aggiornamento e recupero informazioni.

    In pratica come dovrei fare???

    final String Ingredienti.CodiceIngr;
    final String Ingredienti.Descrizione;
    ....
    ...

    questo per tutte le voci della tabella Ingrediente

    quindi mi creo una classe Ingredienti

    public class Ingredienti(){
    public Ingredienti(){

    final String Ingredienti.CodiceIngr;
    final String Ingredienti.Descrizione;
    ....
    .......
    }
    }


    poi sempre in questa classe creo dei metodi tipo

    recuraIngredienti(db.eseguiQuery("Select * from ingredienti;");

    ??

    è così o ho frainteso qualcosa?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    io sono più per l'uso dei bean (e di quello che offrono).

    Allora inizia a creare degli oggetti di questo tipo

    codice:
    public class Persona{
       private String nome; 
       private String cognome; 
     
       public Persona(){;}
    
       //GETTER E SETTER dei parametri 
    }
    devi avere per ogni classe del database una roba di questo tipo, in modo da mappare completamente la struttura del tuo database su un oggetto (e lavorare su quello).
    Ovviamente la modifica della tabella comporta la modifica del bean e prevedere dei valori di default per campi nuovi (in modo da poter riusare il codice vecchio).
    In genere però fissa bene la struttura, si che possono arrivare cambiamenti, ma diciamo non alteriamo interamente il db ogni due per tre.

    Poi l'idea di mappare i nomi della tabella sulla stringa ok, ma io creerei a sto punto una hashmap di stringhe, non tanto stringhe final oltretutto, in modo da avere accesso rapido alla tabella (e magari gestire un poco la possibile dinamicità della stessa). In questo caso avrai solo il metodo loadTable() per crearti questa associazione (che userai scrivendo le query).
    Non è impossibile farlo (ho visto una struttura di questo tipo in azione).
    Per ogni bean che hai usato dovresti creare una classe che si interfaccia con il database (in pratica che ti consenta di fare le comunissime istruzioni di insert, select, update, remove) in modo da buttare in un unico punto tutta la logica di accesso al database. Per questa puoi usare statement, preparedstatement o quello che ti pare, ma è solo qui che parli con il database.

    Per quanto riguarda la tua applicazione avrai:
    1. interfaccia grafica /riga di comando non cambia niente
    2. lavori su collection tipizzate (es List<Persona>), ma chiederai sempre all'interfaccia di comunicazione con il database di caricare/aggiornare queste strutture.
    Banalmente se hai un pulsante LOAD la sua azione andrà ad istanziare (se è necessario) un oggetto di tipo interfacciaPersona e chiederà a questo la load. Stop. Il load restituisce solo ad esempio una List<Persona>, che userai ad esempio per valorizzare una comboBox (banalmente usi tutti i nomi come stringhe (valore) del combobox).
    3. se devi fare query incrociate: queste possono crearti dei problemi, non insormontabili: aggiungi alla tua interfaccia col db la possibilità di eseguire una query che passi come stringa e che restituisca una lista di persone. In questo modo sarà il motore sql ad occuparsi della risoluzione della join. Se invece il tipo di ritorno non coincide con un bean (prende campi da uno o da un altro) o ti crei una classe di appoggio che restituisce un resultset oppure (e qui è poco performante) fai una prima select in cui prendi i result della tabella e una seconda in cui tramite i result della prima prelevi gli oggetti della seconda. Ma questa soluzione risulta poco performante.
    E' una soluzione semplice anche da mettere in pratica, spero solo di essere stata chiara

  5. #5
    Allora ho capito cosa vuoi dirmi e sto pensando se crearmi un oggetto o meno poichè io quello che devo fare per la mia applicazione è solo modifica e inserimento di dati in un database cmq...

    detto ciò sto pensando di utilizzare come database javaDb in quanto consente di avere una applicazione portabile al massimo. Mentre se utilizzassi come al solito MySql sono costrtto ad avere il database installato sul mio pc......

    allora adesso la mia prima priorità e quella di cambiare dabase e di crearmi la classe database che mi consente di interagire con javaDB.


    Io ho sempre utilizzato MySql e la classe database utilizzata è quella che mi ho preso dalle pillole presenti su questo sito.

    Affinche possa utlizzare javaDB devo importare il file Derby.jar come libreria e poi??'

    Scusa fin da ora se ho detto qualche cazz......ata

    grazie a tt

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 © 2026 vBulletin Solutions, Inc. All rights reserved.