|
Verifichiamo la disponibilità delle risorse necessarie al framework (direttamente dal classpath del mio project): <classpathentry kind="lib" path="/COMMON_LIB/commons-pool.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/db-ojb-1.0.1.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-dbcp-1.0-src.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-beanutils.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-collections.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-digester.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-lang.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/commons-logging.jar"/> <classpathentry kind="lib" path="/COMMON_LIB/mysql-connector-java-3.0.7-stable-bin.jar"/> Esaminiamo i punti salienti del codice: inseriremo 'n' record ed interrogheremo la base dati con una semplice query. import java.util.Collection; import java.util.Iterator; import org.apache.ojb.broker.PersistenceBrokerFactory; import org.apache.ojb.broker.query.Criteria; import org.apache.ojb.broker.query.Query; import org.apache.ojb.broker.query.QueryByCriteria; import beans.TB01_anag; org.apache.ojb.broker.PersistenceBroker broker = null; try { // istanza del broker broker = PersistenceBrokerFactory.defaultPersistenceBroker(); // l'isolation level della transazione è settato nel file repository.xml broker.beginTransaction(); // Inserimento: il bean TB01_anag mappa il record della tabella TB01_ANAG // Inseriamo 5 record TB01_anag tab = null; for(int i=0; i<10; i++) { // istanza del bean tab = new TB01_anag(); // Abbiamo creato la tabella per la gestione delle HighLowSequence: usiamola ed // omettiamo la valorizzazione della primary key! :-) tab.setId(i); // Valorizzazione del campo NOME tab.setNome("Nome "+i); // Valorizzazione del campo COGNOME tab.setCognome("Cognome "+i); // scrittura del record su db broker.store(tab); // ...in pratica: // insert into TB01_anag (ID, NOME, COMGNOME) values (0, 'Nome 0', 'Cogmone 0') } broker.commitTransaction(); // Interrogazione della base dati: estraggo tutti gli utenti con id > 4 // Istanzio un Criteria Criteria crit = new Criteria(); // setto una clausola equivalente alla where dell'SQL standard, dove specifico che // la colonna ID deve avere un valore maggiore di 4 crit.addGreaterThan("ID", new Integer(4)); // istanzio l'oggetto Query di OJB, passando al costruttore il criteria appena creato Query query = new QueryByCriteria(TB01_anag.class, crit); // il broker si occupa di eseguire la query, recuperare il ResultSet e // "impacchettare" il risultato in una collection di oggetti. // ************ // *ATTENZIONE* // ************ // La collection restituita contiene OGGETTI java.lang.Object, pertanto è importante // porre attenzione al cast in fase di scorrimento dell'Iterator // ...oppure... // J2SE 1.5: Collection <TB01_anag> coll = broker.getCollectionByQuery(query); Collection coll = broker.getCollectionByQuery(query); Iterator iterator = coll.iterator(); TB01_anag tab2 = null; while(iterator.hasNext()) { // cast Object -> TB01_anag tab2 =(TB01_anag)iterator.next(); // mediante i getter del bean, estraggo i valori del "record" System.out.println(tab2.getId()+" - "+tab2.getNome()+" - "+tab2.getCognome()); } }catch (Throwable t){ t.printStackTrace(); System.out.println("Rollback transaction"); broker.abortTransaction(); } finally{ // chiusura del borker if(broker!=null)broker.close(); } Complilate, avviate, buona fortuna.
|