Home > ammentos, java, persistence framework, programmazione > Vi presento Ammentos

Vi presento Ammentos

settembre 18, 2009

ammentos_logo

Se siete programmatori Java e avete a che fare con database, framework di persistenza e gestione dati, vi prego di leggere questo articolo.

Vi assicuro che investire 5 minuti del vostro tempo per leggere queste mie parole sarà una cosa per voi molto utile.

Cos’è Ammentos?

Ammentos è un framework di persistenza Java davvero molto semplice e intuitivo  alternativo ad Hibernate e iBatis  basato su semplici annotazioni, che non necessità di nessun file di configurazione e che risiede tutto in un unico piccolo jar.

Quali sono i vantaggi di Ammentos?

– E’ gratis ed opensource

– Curva di apprendimento davvero bassissima: Si impara realmente in 5 minuti (provate voi stessi a leggere la guida nel sito e ditemi se dopo 5 minuti non siete già in grado di creare un vostro programma utilizzando il framework)

– lightweight: Ammentos è molto leggero, non appesantisce le vostre applicazioni e le performance sono identiche ad utilizzare direttamente le istruzioni sql

– Basato su standard moderni come le annotations

– Nessun file di configurazione: Ammentos non necessita di alcun file di configurazione dove inserire nomi tabelle, campi, query etc

– Nessuna dipendenza esterna: finito l’incubo di andar a ritrovare 200 jar dipendenti dispersi nel globo di internet

Perchè questo spot di Ammentos ? Cosa ci guadagni?

Assolutamente niente!

Il problema piu’ grosso che esiste in internet è la visibilità. Purtroppo validissimi progetti non vengono adottati semplicemente perchè non sono conosciuti.

Nella mia carriera di sviluppatore Java ho provato Hibernate, iBatis e prodotti simili ma li ho sempre trovati troppo caotici, pesanti e inutilmente complessi. Da qualche anno uso Ammentos e visto che mi facilita la vita ve ne parlo da utente contento e ve lo consiglio come un amico consiglia un buon locale o una pizzeria dove si spende poco e si mangia bene.

Facci vedere un pò come funziona ammentos e basta fare pubblicità🙂

Ok, ok, vi faccio vedere subito un esempio di come funziona ammentos.

Ipotizziamo di voler salvare i dati di una persona (nome e cognome) in una tabella. Una semplicissima anagrafe insomma!

Ecco come apparirà il nostro codice già con le annotazioni di ammentos:

import it.biobytes.ammentos.PersistentEntity;
import it.biobytes.ammentos.PersistentField;

@PersistentEntity(primaryKey="id",sourceDomain="persons")
public class Person {
@PersistentField(automatic=true)
private String id;

@PersistentField
private String name;

@PersistentField
private String surname;

// Codice classico che si scriverebbe anche senza ammentos...
public String getId() {return id;}

public String getName() {return name;}

public void setName(String name) {this.name = name;}

public String getSurname() {return surname;}

public void setSurname(String surname) {this.surname = surname;}
}

Come vedete ci sono giusto due annotazioni in piu’ rispetto a come la scrivereste normalmente! La maggior parte del codice è dato dai metodi get/set (che tra l’altro ammentos non utilizza, che servono semplicemente per fare un model piu’ robusto senza far accedere direttamente alle variabili membro).

Analizziamo il codice pezzo per pezzo:
@PersistentEntity(primaryKey="id",sourceDomain="persons")
public class Person {
Con l’annotazione PersistentEntity si indica che la classe Person è una classe da far persistere. Il campo primaryKey indica qual’è il nome del campo contenente la chiave primaria della tabella mentre il campo sourceDomain indica il nome della tabella nel database.

@PersistentField(automatic=true)
private String id;

Per memorizzare un campo nel database è sufficiente annotatarlo con l’annotazione PersistentField. Questa annotazione ha diversi parametri. Tra questi, il parametro automatic=true indica ad ammentos di gestire lui il valore dell’id e di generarne uno univoco al salvataggio dell’oggetto. In pratica potete dimenticarvi di impazzire dietro sequenze et simila (che comunque per i piu’ smaliziati ammentos supporta)

@PersistentField
private String name;
@PersistentField
private String surname;

Indica gli altri due campi persistenti. Se non viene specificato altrimenti, i nomi dei campi del database per memorizzare tali variabili saranno identici ai nomi delle variabili (facile, no?). Se volete utilizzare nomi diversi basterebbe mettere così:

@PersistentField(fieldName="user_name")
private String name;

Bene, e ora come si salva o si caricano i dati?

per salvare i dati potete dimenticarvi i DAO etc in quanto Ammentos è già di per se un “DAO universale”.

Quindi basta fare semplicemente:

Ammentos.save( istanzaOggettoPersona );

Tutto qui!

Sarà lui stesso ad occuparsi di fare una insert nel database o una update in base allo stato dell’oggetto che state salvando.

Per caricare un record invece è sufficiente fare:

Person p = Ammentos.load( Person.class, "idoggetto" );

E se volete caricare delle persone dato il cognome ad esempio?

SqlQueryFilter filter = new SqlQueryFilter("surname=?");
filter.setString( "rossi");
List<Person> people = Ammentos.load( Person.class, filter );

Tutto qui?

Questo è solo un accenno di ciò che ammentos può fare, siamo appena al suo guscio esterno e già così possiamo vedere come riesca a risolvere le problematiche piu’ comune nella gestione dei dati in modo semplici e elegante ma ci sono ancora talmente tante caratteristiche di cui parlare che ho deciso di dedicare una serie di articoli a questo meraviglioso framework sperando di aiutarlo un pochino ad acquisire visibilità e prendere il posto che si merita.

Spero di avervi fatto cosa gradita a presentervalo

A presto

Daniele

  1. Francesco
    novembre 2, 2009 alle 6:45 pm

    Articolo interessante,
    sono incappato nel tuo blog proprio perchè mi sto cimentando con Ammentos: mi sono dato un mese di tempo per sperimentare e trovare un ORM (o altra tecnologia) che mi consenta, per applicazioni Java, desktop, stand-alone, di dimensioni medie e piccole, di progettare & implementare rapidamente e facilmente il layer di persistenza (e che sia abbastanza flessibile da ammortizzare il costo di eventuali modifiche/intregazioni apportate successivamente).

    L’unica pecca è che spesso la documentazione è un pochino scarna e appena uno si trova di fronte problemi un attimo più complessi di quelli base, deve perdere un po’ di tempo per capire…

    Quindi se pubblichi altri articoli in materia soarò felice di leggerli.

    Se ti interessa, ho aperto un thread nel forum della sezione Programmazione del sito di Hardware Upgrade, sito italiano sulla tecnologia che ha un bacino d’utenza imponente.

    Eccoti il link al thread, casomai dovesse interessarti: http://www.hwupgrade.it/forum/showthread.php?t=2076745

    Io sono l’utente con nick banryu79, ciao.

  1. No trackbacks yet.
I commenti sono chiusi.
%d blogger cliccano Mi Piace per questo: