Il progetto Speedment Open Source rappresenta una valida alternativa per gli sviluppatori Java in ambito database. Questo framework sfrutta lo standard jdbc per analizzare il database, generando automaticamente il codice Java 8 delle entità (includendo anche i javadocs) e creando il mapping tra le colonne del database relazionale e i tipi degli oggetti Java. Il risultato è un’astrazione del database e una modalità di interrogazione puramente basata su Java 8. L’applicazione quindi risulta indipendente dalla base di dati.

Rispetto ad un framework ORM, gli sviluppatori Java non devono sfruttare una nuova API, non scrivono nemmeno una riga di codice per creare le classi delle entità del database e non configurano nessun file o parametro. Tutto ciò si traduce in una riduzione dei tempi di sviluppo.

Essendo il database presentato come normali oggetti Java 8, è possibile applicare tutti i metodi Stream per migliorare le performances dell’applicazione. La versione Open Source di Speedment supporta i database MySQL e MariaDB, ed è distribuita sotto licenza Apache 2. E' quindi possibile visualizzare, utilizzare e modificare il codice. Esiste anche una versione Enterprise che supporta praticamente tutti i tipi di database come Oracle, DB2, Informix, ed è compatibile con Java 7.

Analizziamo un esempio di utilizzo del framework. Supponiamo di avere una tabella “hare” su un server database e vogliamo estrarre tutte le righe con “AGE” maggiore di 8. Il codice è il seguente:

List oldHares = hares.stream()
.filter(AGE.greaterThan(8))
.collect(toList());

Dal codice sembra che venga scaricata dal server l’intera tabella poi filtrata sul client. Ma cosa succederebbe se la tabella contenesse un milione di righe? Chiaramente si avrebbero problemi di performance.

In realtà Speedment analizza il filtro “AGE.greaterThan(8)” prima dell’operazione finale “collect()”, concludendo che è solo la colonna “hare.age” che deve essere confrontata con 8. In questo modo il framework è in grado di ridurre lo stream di righe al risultato della query SQL:

SELECT * FROM ‘hare’ WHERE ‘hare’.’age’ > 8;

Attraverso Speedment lo sviluppatore può utilizzare gli stream Java 8 senza preoccuparsi di come essi vengono tradotti in SQL.

Via: Speedment

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *