Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [Java] Api persistence

  1. #1

    [Java] Api persistence

    Un saluto a tutti sono nuovo del forum ma vi leggo da parecchio.

    Voglio imparare a utilizzare le api persistence , per iniziare ho creato un piccolo db che voglio popolare e interrogare da classi java, vi spiego quello che ho fatto

    Allora il Database l'ho creato utilizzando "MySQL manager Lite for mySQL" (1 sola tabella"People" con 2 campi, String nome[key]-String Number, giusto per fare pratica) .

    Creo il collegamento da Netbeans nel seguento modo :
    Servizi->Database->New Connection-> Seleziono Driver "MySql-Connector/J-driver" e seleziono il file_driver corrispondente
    inserisco nome e password e clicco su Test_Connessione e mi dice che la connessione è riuscita.

    Creo un nuovo Progetto ( Java Application ) , creo un nuovo packege "DB"- creo dentro "classe entita del database"
    Seleziono la connessione del DB e l'unica tabella , poi seleziono :
    "Genera annotazione delle query con nome per i campi persistenti"
    "Genera JAXB annotions"
    "Create Persistence Unit"
    "Use column name in relationship" e clicco su fine.

    è stato creato il package MeTa_inf della persistenza.


    Ora voglio provare a inserire il primo record nel mio db,
    creo una classe prova:
    codice:
    public class prova {
    People p;
    EntityManagerFactory factory ;
    EntityManager database;
    
    public prova(){
    p=new People("Giacomo");
    factory = Persistence.createEntityManagerFactory("JavaApplication14PU");
    database = factory.createEntityManager(); }
    
    public String insertRecord(){
    try{
    database.getTransaction().begin();
    database.persist(p);
    database.getTransaction().commit();
    return "----- Ok ------";
    }
    catch(Exception e){ return(" !!!!!!!!!!! errore !!!!!!!!! "); }
    } } //fine
    nel main:
    codice:
    people p=new people();
    System.out.println(g.insertRecord());
    ...
    e mi da diversi errori, il primo è questo:

    codice:
    [EL Info]: 2013-07-22 15:47:41.167--ServerSession(32326406)--EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461
    [EL Severe]: 2013-07-22 15:47:41.224--ServerSession(32326406)--Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
    Exception Description: Configuration error.  Class [com.mysql.jdbc.Driver] not found.
    HELP ME!

  2. #2

    Moderazione

    Benvenuto sul forum! Ti ricordo che:
    • le discussioni relative a Java non sono trattate qui, ma nell'apposita sottosezione;
    • il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione.


    Ora correggo io e provvedo a spostare il thread, in futuro imposta correttamente la discussione fin da subito; nel frattempo ti consiglio di dare un'occhiata al regolamento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Direi che l'errore è palese:
    Exception Description: Configuration error. Class [com.mysql.jdbc.Driver] not found.
    Ti mancano i driver (jar) del connector di mysql nel path del tuo progetto. Pultroppo non uso netbeans e non so dirti come aggiungerli, ma se vuoi ti spiego come compilarlo e lanciarlo da riga di comando.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ti manca il driver jdbc per MySQL: scaricatelo e aggiungilo al tuo progetto.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Originariamente inviato da francesco.muia
    Direi che l'errore è palese:
    Exception Description: Configuration error. Class [com.mysql.jdbc.Driver] not found.
    Ti mancano i driver (jar) del connector di mysql nel path del tuo progetto. Pultroppo non uso netbeans e non so dirti come aggiungerli, ma se vuoi ti spiego come compilarlo e lanciarlo da riga di comando.
    Ti sembrero stupido ma... non ci sono riuscito .

    Allora ho scaricato questo :http://dev.mysql.com/downloads/connector/j/

    Come faccio per aggiungerlo? uso netbeans...

  6. #6
    va benissimo anche da linea di comando... basta che riesco a risolvere

    grazie a entrambe

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da kblade98
    Ti sembrero stupido ma... non ci sono riuscito .

    Allora ho scaricato questo :http://dev.mysql.com/downloads/connector/j/

    Come faccio per aggiungerlo? uso netbeans...
    Sul progetto dovrebbe esserci un add library, add to build path o qualcosa di simile...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Ok perfetto ,

    Sono 4 giorni che mi ero fermato per questa maledetta cax......

    Grazie

  9. #9

    Ricerca per ..

    Allora ho un'altro problema , tanto per cambiare....

    ho popolato il mio db con diversi record , ora voglio fare delle ricerche.

    Il mio Database di nome CONTATTO è formato in questo modo:
    ( ID int -chiave | NOME String | NUMBER String )

    Se voglio fare la ricerca per ID che è la chiave faccio nel seguente modo :


    codice:
     
    ........
    database.getReference(Contatto.class, x);
    //x è un int
    //database è l'EntityManager
    ........
    e funziona .

    Ma se voglio ricercare un record solo per NOME come faccio?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Primo punto, dovresti utilizzare il metodo "find()" e non "getReference()". La differenza tra i due è presto spiegata:

    Il metodo find() effettua le seguenti operazioni:
    1) Cerca l'istanza dell'oggetto corrispondente alla chiave all'interno dell'EntityManager: se la trova (che significa che tale istanza è già stata caricata in precedenza), la ritorna

    altrimenti

    2) effettua la query sul DB per ottenere il record corrispondente. Se non trova nulla, ritorna null.

    Il metodo getReference() effettua le seguenti operazioni:
    1) Creca l'istanza dell'oggetto corrispondente alla chiave all'interno dell'EntityManager: se la trova la ritorna (vedi punto 1 precedente).

    altrimenti

    2) non effettua nessuna query nel DB, ma ritorna una Proxy Instance che può essere successivamente caricata dal DB (lazy-fetched). La proxy instance può tranquillamente essere completamente vuota, tranne per la chiave che viene valorizzata col valore che gli hai passato tu.

    Quindi, se vuoi caricare effettivamente il record dal DB, usa find() e non getReference().

    Se vuoi cercare un record usando un campo non chiave, devi creare una Query ed eseguirla:

    codice:
    // Creo una query con un parametro (":nome")
    TypedQuery<Contatto> qryContatto = database.createQuery("SELECT c FROM Contatto c WHERE c.NOME = :nome", Contatto.class);
    
    // Setto il valore per il parametro
    qryContatto.setParameter("nome", "Mario");
    
    // Eseguo la query e ottengo la mia Entity
    // Se sono sicuro che c'è un solo "Mario"
    Contatto c = qry.getSingleResult();
    
    // Se possono esserci più "Mario"
    List<Contatto> lst = qry.getResultList();
    Ti consiglio di seguire il tutorial ufficiale di JPA, per avere una panoramica completa di cosa puoi fare.


    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

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.