Database con java

di il
18 risposte

Database con java

Sto cercando di capire come funzionano i database cn java e non capisco proprio nulla, qualcuno può darmi almeno un piccolo input? Anche solo il primo passetto?

18 Risposte

  • Re: Database con java

    p0ll0 ha scritto:


    Sto cercando di capire come funzionano i database cn java e non capisco proprio nulla, qualcuno può darmi almeno un piccolo input? Anche solo il primo passetto?
    Azzz... dipende da cosa intendi per "database".
    Se ti riferisci ai diffusi RDBMS (mysql, mariadb, postgres, lo stesso MSSQL nella versione express, Oracle e così via) ... essenzialmente mediante ODBC o (più raramente) driver diretti e specifici.
    Se ti riferisci a "qualsiasi database" (sqllite e chi più ne ha ne metta) tipicamente attraverso... librerie specifiche.
  • Re: Database con java

    p0ll0 ha scritto:


    Sto cercando di capire come funzionano i database cn java e non capisco proprio nulla, qualcuno può darmi almeno un piccolo input? Anche solo il primo passetto?
    Premessa: il contesto dei database è veramente molto ampio. Innanzitutto si dividono in database "relazionali" e "non relazionali".
    Se consideri quelli relazionali (MySQL, PostgreSQL, ecc...) in Java la API basilare per l'accesso ad un db relazionale è JDBC. Poi "sopra" JDBC ci possono essere API/librerie di "persistenza" di più alto livello.

    Quindi, consiglio, inizia magari a leggere qualcosa su JDBC.
  • Re: Database con java

    Sìsì, intendevo i JDBC. Ho provato a leggere qualcosa e non ci ho capito niente.
  • Re: Database con java

    p0ll0 ha scritto:


    Sìsì, intendevo i JDBC. Ho provato a leggere qualcosa e non ci ho capito niente.
    Che cosa hai letto esattamente? I dubbi a che livello sono?
  • Re: Database con java

    Ho fatto questo, adesso che devo fare?
    
        public static Connection mysql() {
            try {
                String driver = "com.mysql.jdbc.Driver";
                String url = "jdbc:mysql://localhost:3306/database";
                String username = "a";
                String password = "a";
                Class.forName(driver);
                Connection con = DriverManager.getConnection(url, username, password);
                return con;
            } catch (Exception e) {
                System.out.println(e);
            }
            return null;
        }
    
        public static void creaTabella() {
    
            try {
                Connection con = mysql();
                PreparedStatement crea = con.prepareStatement("CREATE TABLE IF NOT EXISTS tablename() id int not nulla auto_increment, first varchar(255), last varchar(255), PRIMARY KEY(id)");
                crea.executeUpdate();
                crea.close();
            } catch (Exception e) {
            }
        }
    
        public static void main(String[] args) {
            creaTabella();}
  • Re: Database con java

    p0ll0 ha scritto:


    Ho fatto questo, adesso che devo fare?
    Beh, qualcosa di base c'è ma andrebbe rifinito meglio. Ma la questione è: che tipo di applicazione vuoi fare? Una applicazione console? gui (es. Swing)? webapp?

    Nelle applicazioni console (che generalmente sono single-thread), è sufficiente una sola connection ri-usata per tutte le query. Nelle applicazioni gui bisogna vedere in che contesto (thread, intendo) si vogliono fare le query. Se si fanno nel contesto del EDT, si tiene bloccata tutta la interfaccia utente, che non è proprio bello. Se si fanno in un thread separato è meglio. Ma bisogna vedere se si crea un nuovo thread per ogni query oppure se si fa una piccola architettura per "confinare" le query nello stesso thread a parte dal EDT.

    Nelle webapp NON si crea generalmente una nuova Connection ad ogni request. Le Connection sono risorse "prezione" che consumano tempo/risorse a crearle. Tipicamente si usa una piccola libreria che fa da connection "pool".
  • Re: Database con java

    Sto facendo un sito prova con java gui. È il sito di una scuola uno si iscrive e devo memorizzare i suoi dati in un database.
    Non sono sicura di che è swing, uso jFrame. Quindi che devo fare?
  • Re: Database con java

    Due anzi tre osservazioni
    1 è normale che il programma si blocchi durante l'esecuzione sincrona diuna query. Anzi è un comportamento auspicabile in tutti tranne pochissimi casi

    2 la connection java 'pesa' ma non perché pesi la connessione mysql, che è anzi leggerissima ed è una delle peculiarità

    3 odbc (ancor peggio nella implementazione java) è pesantissima. Ciò si nota in particolare nelle applicazioni LAN (on quelle WAN la latenza è talmente enorme da coprire il problema)
  • Re: Database con java

    Ok, grazie.Adesso che devo fare?
  • Re: Database con java

    p0ll0 ha scritto:


    Ok, grazie.Adesso che devo fare?
    Beh, innanzitutto se vuoi fare una applicazione con gui Swing, per il momento (giusto perché stai iniziando con i DB), può essere accettabile che fai le query nel contesto del EDT (che ripeto, non è "bellissimo" ma prendiamolo per buono ..). E in tal caso è anche accettabile ri-usare la stessa Connection per tutte le query (che quindi non saranno mai "concorrenti").

    Ma dovresti comunque scrivere le classi con il giusto design. Quindi predisponi una classe dedicata alla Connection in modo che possa fornire sempre la stessa Connection. Insomma, creata alla prima richiesta e poi ri-restituita le volte dopo.
    Poi per ciascuna tabella fai una classe DAO che espone come minimo le classiche operazioni CRUD (o comunque il minimo che possa servire) più eventualmente altre operazioni particolari.
    E naturalmente "modella" le entità appropriatamente. Se hai una tabella es. STUDENTI, fai una classe Studente.
  • Re: Database con java

    Ok ho fatto una classe dedicata alla connessione SQL, adesso che devo fare?
  • Re: Database con java

    p0ll0 ha scritto:


    Ok ho fatto una classe dedicata alla connessione SQL
    Fai vedere?

    p0ll0 ha scritto:


    adesso che devo fare?
    Continuare con il resto della gestione delle query. Tieni presente una cosa: prima ho visto che da Java facevi una CREATE TABLE. La creazione della base dati e delle tabelle generalmente è una questione "amministrativa" che si fa "una tantum" e dipende anche da come/chi installa l'applicazione e il DBMS (es. MySQL).
    Quindi solitamente non è la applicazione che crea la base dati (salvo casi o scelte particolari) ma si fa uno script SQL che opportunamente crea tutta la base dati. E che si esegue appunto all'inizio "una tantum".
  • Re: Database con java

    Boh guarda io continuo a non capire nulla.
  • Re: Database con java

    Cosa non capisci di quello che è stato spiegato fino a qui?
Devi accedere o registrarti per scrivere nel forum
18 risposte