Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Speedment Open Source: l’alternativa Java 8 ad Hibernate.

Speedment Open Source: l’alternativa Java 8 ad Hibernate.
Link copiato negli appunti

Quasi tutti gli sviluppatori Java nella loro vita implementativa si trovano di fronte alla scelta di come far interagire un linguaggio orientato agli oggetti come Java con il mondo profondamente diverso dei database relazionali. Molto spesso le opzioni si riducono alla scrittura di un proprio livello di mapping tra l’applicazione e il database, oppure all’utilizzo di un framework ORM (Object Relational Mapper) come Hibernate. Quasi sempre la scelta ricade su Hibernate, tuttavia la sua configurazione può non essere semplice e il suo utilizzo, in alcuni casi, può ridurre le performance dell’applicazione.

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

Ti consigliamo anche