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

    Dubbio sulle Entity e unità di persistenza

    Scusate la newbbagine,
    come da titolo ho dei dubbi sull'utilizzo di Entity e Persistence Unit.

    Ultimamente sto realizzando un software gestionale connesso ad un DB. Nonostante sia in grado di realizzare tale software creando il codice("a manina", quindi senza usare entity class e persistence unit che sono create automaticamente dal netbeans) che mi interfaccia con il derby db, mi sono convinto che realizzare il software con tali strumenti possa rendere il software + sicuro, però questo approccio mi sà dando non pochi problemi e sto seriamente pensando di abbandonare questa via e interfacciare il software al DB come ho sempre fatto.

    La mia domanda è la seguente: sono realmente necessarie Entity e Persistence Unit al fine di realizzare un software che interagisca con un DB , o realizzare una semplice classe di gestione del DB da codice può fornire uguale sicurezza(tenendo cmq in conto che questa seconda soluzione non prevede la gestione rollback delle operazioni, e che il DB non è particolarmente complesso[si tratta di tre tabelle in cui una è legata alle altre due attraverso foreign key] )?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: Dubbio sulle Entity e unità di persistenza

    Originariamente inviato da tritrillidan
    sono realmente necessarie Entity e Persistence Unit al fine di realizzare un software che interagisca con un DB
    La risposta, ovviamente, è NO. Non sono necessarie: sono molto utili e facilitano di molto la gestione, liberando il programmatore da tutti i dettagli di interazione col DB (gestione della connessione, disconnessione, query, trattamento di dati complessi, trattamento di dati di tipo data/ora, ecc).

    o realizzare una semplice classe di gestione del DB da codice può fornire uguale sicurezza (tenendo cmq in conto che questa seconda soluzione non prevede la gestione rollback delle operazioni, e che il DB non è particolarmente complesso[si tratta di tre tabelle in cui una è legata alle altre due attraverso foreign key] )?
    Dipende sempre tutto da quanto tempo e quante risorse vuoi/puoi dedicare a queste cose.

    Sinceramente, ultimamente mi sono avvicinato anch'io al mondo della JPA e non credo che tornerei sui miei passi per applicazioni di un certo spessore: se non avessi adottato questa tecnologia a quest'ora starei ancora perdendo un sacco di tempo a cercare di risolvere piccole problematiche delle quali, sinceramente, non voglio occuparmi io quando può farlo una libreria che sicuramente è stata testata a sufficienza.


    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

  3. #3
    è questo è il problema che mi aveva invogliato a passare alle JPA ma dato che non sò bene come raccapezzarmi con le classi entity: non riesco a gestire le query e in particolar modo le annotation la connessione la disconnessione. ecc...

    potreste consigliarmi del materiale su cui studiare?

  4. #4
    faccio un esempio. io ho questa entity class:
    codice:
    @Entity
    @Table(name = "ANAGRAFICA")
    @NamedQueries({@NamedQuery(name = "Anagrafica.findByIdR", query = "SELECT a FROM Anagrafica a WHERE a.idR = :idR"), @NamedQuery(name = "Anagrafica.findByNameR", query = "SELECT a FROM Anagrafica a WHERE a.nameR = :nameR"), @NamedQuery(name = "Anagrafica.findByIndirizzo", query = "SELECT a FROM Anagrafica a WHERE a.indirizzo = :indirizzo")})
    public class Anagrafica implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Column(name = "ID_R", nullable = false)
        private Integer idR;
        @Column(name = "NAME_R")
        private String nameR;
        @Column(name = "INDIRIZZO")
        private String indirizzo;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "idR")
        private Collection<ELavoro> eLavoroCollection;
    
        public Anagrafica() {
        }
    
        public Anagrafica(Integer idR) {
            this.idR = idR;
        }
    
        public Integer getIdR() {
            return idR;
        }
    
        public void setIdR(Integer idR) {
            this.idR = idR;
        }
    
        public String getNameR() {
            return nameR;
        }
    
        public void setNameR(String nameR) {
            this.nameR = nameR;
        }
    
        public String getIndirizzo() {
            return indirizzo;
        }
    
        public void setIndirizzo(String indirizzo) {
            this.indirizzo = indirizzo;
        }
    
        public Collection<ELavoro> getELavoroCollection() {
            return eLavoroCollection;
        }
    
        public void setELavoroCollection(Collection<ELavoro> eLavoroCollection) {
            this.eLavoroCollection = eLavoroCollection;
        }
    
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (idR != null ? idR.hashCode() : 0);
            return hash;
        }
    
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Anagrafica)) {
                return false;
            }
            Anagrafica other = (Anagrafica) object;
            if ((this.idR == null && other.idR != null) || (this.idR != null && !this.idR.equals(other.idR))) {
                return false;
            }
            return true;
        }
    
        @Override
        public String toString() {
            return "desktopapplication3.Anagrafica[idR=" + idR + "]";
        }
    
    }
    Come faccio a sfruttare una delle named query inserite all'inizio?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da tritrillidan
    faccio un esempio. io ho questa entity class:

    ...

    Come faccio a sfruttare una delle named query inserite all'inizio?
    Per poter utilizzare una named query devi semplicemente creare l'oggetto Query relativo dall'EntityManager:

    codice:
    Query q = entityManager.createNamedQuery("Anagrafica.findByIdR");
    List<Anagrafica> lista = q.getResultList();
    Trovi tutto il materiale che ti serve on-line. Ci sono diversi esempi.

    Ti indico il link al tutorial di Oracle
    In particolare, la parte riguardante la JPA:

    Inoltre, tieni sempre sotto mano le API.

    A questo link puoi trovare un esempio di costruzione di una applicazione che sfrutta la JPA


    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.