ERP 2.50:Developers Guide/Concepts/Data Access Layer/it
Languages: |
Introduzione
Openbravo Data Access Layer (DAL) rappresenta un nuovo sviluppo fatto nella versione 2.50 di Openbravo ERP. Lo scopo dello sviluppo DAL è di consolidare il middle-tier nel'applicazione, ad esempio implementando la business logic in Java. DAL fornisce allo sviluppatore le seguenti funzionalità:
- Esecuzione di query Type-safe e recupero di oggetti di business dal database.
- Un API comoda per modificare o creare nuovi dati nel database.
- Un interfaccia type-safe per modificare informazioni di un oggetto di business , aumentando la produttività costruendo le proprietà di un oggetto di business direttamente visibile con i metodi getters e setters (nell'IDE).
- Gestione transazioni e contesti.
- Controllo sicurezza e validazione.
- Mappatura automatica delle modifiche nell'Application Dictionary a tabelle e colonne di database.
- Genera oggetti di business come classi Java (e loro associazioni) sulla base del modello dell'Application Dictionary.
DAL consiste di una tempo di sviluppo e uno di esecuzione . Il tempo di sviluppo è finalizzato a generare le classi Java per gli oggetti di business . Il tempo di esecuzione si occupa di mappare le classi Java con il database e fornisce funzionalità come sicurezza e validazione.
Esempio : 'Hello World'
Come primo esempio creiamo un nuovo business partner group e registriamolo nel database:
// create the object through the factory final Category bpg = OBProvider.getInstance().get(Category.class); // set some values bpg.setDefault(true); bpg.setDescription("hello world"); bpg.setName("hello world"); bpg.setValue("hello world"); bpg.setActive(true); // store it in the database OBDal.getInstance().save(bpg);
Ci sono alcuni punti che è importante notare :
- Il codice non imposta un esplicito user context. Lo user context viene impostato automaticamente quando il codice è in esecuzione in Openbravo ERP. In altri ambienti deve essere impostato esplicitamente , vedi qui per ulteriori informazioni.
- C'è una classe BPGroup che modella i dati della tabella c_bp_group. Questa classe ha i metodi type safe getters e setters per tutti i dati in questa tabella.
- Una factory (OBProvider) è utilizzata per creare un'instanza della classe BPGroup .
- Il servizio OBDal è il principale punto di ingresso nel Data Access Layer, offre funzionalità di salvataggio, eliminazione e di query. La API OBDal viene discussa in dettaglio più in la.
Il frammento di codice sopra mostra anche che non è necessario lavorare con SQL o JDBC per lavorare con i dati del database. Lo sviluppatore lavora direttamente con oggetti e il dato disponibile è direttamente visibile con i getters e i setters.
Il passo successivo: eseguiamo una richiesta per il business partner group, e cambiamo la sua descrizione:
// create an OBCriteria object and add a filter final OBCriteria<BPGroup> obCriteria = OBDal.getInstance().createCriteria(BPGroup.class); obCriteria.add(Expression.eq("name", "hello world")); // perform the actual query returning a typed list final List<BPGroup> bpgs = obCriteria.list(); final BPGroup bpg = bpgs.get(0); // and set a new name bpg.setName("another hello world");
Questo codice introduce nuovi concetti:
- Il servizio OBDal è utilizzato per creare un oggetto OBCriteria.
- L'oggetto OBCriteria rappresenta la query , implementa l'interfaccia Hibernate Criteria e può essere usato come oggetto standard Hibernate Criteria. L'oggetto OBCriteria supporta anche parametri di ordinamento e di paginazione . La API OBCriteria viene discussa più in dettaglio più in là.
- Il metodo della lista OBCriteria esegue la query effettiva, restituisce una lista type safe degli oggetti richiesti.
- Dopo aver cambiato il nome del business partner group non è necessario fare un salvataggio esplicito. Quando verrà effettuato il commit Hibernate automaticamente rileva gli oggetti con modifiche in sospesoe li salva.
Questa era una breve introduzione che mostra come DAL possa essere utilizzato per creare, memorizzare e recuperare un (semplice) oggetto di business. Il resot di questo documento descriverà la funzionalità Data Access Layer più dettagliatamente.
Architettura DAL
L'immagine mostra l'architettura per il data access layer in questa e le seguenti releases di Openbravo ERP.
Questa architettura è parzialmente implementata nella 2.50 e verrà estesa e completata nelle seguenti releases:
- Runtime model (2.50): il modello runtime è il main driver per generare gli oggetti di business e il mapping di Hibernate. E' anche usata estensivamente in sicurezza, export/import e in implementazioni di webservices .
- Hibernate Mapping (2.50): dal modello di runtime il DAL (durante l' inizializzazione) genera un mapping Hibernate. Questo mapping Hibernate è usato per inizializzare Hibernate.
- Database Schema: the runtime model (actually the application dictionary) can be used to update the database schema. In 2.50 this is not available as part of the DAL but as part of the DBSourceManager product.
- Data Access Layer (2.50): the Data Access Layer (DAL) provides an API to store, query and remove business objects from the database.
- Business Model/Logic Layer (some examples in 2.50): the business model/logic layer contains the implementation of the business processes.
- Business Services (not in 2.50, except for REST webservice): the service layer exposes the business logic to the outside world. In 2.50 this layer contains the REST Webservice provided by the DAL.
The complete architecture runs inside of a context which provides security and transaction handling.