ActiveObject: Active Record per Java

Una delle componenti più apprezzate del framework Ruby on Rails è senza dubbio il modulo ActiveRecord. Il modulo prende il nome dal pattern ideato da Martin Fowler e descritto in Patterns of Enterprise Application Architecture.

In breve, il pattern descrive un ORM che preveda degli oggetti che oltre a conservare i dati persistenti sul database, siano in grado di effettuare operazioni riflessive, come ad esempio “salvarsi” sul database. Questo tipo di comportamento, molto differente rispetto a quello dei classici ORM, ha riscontrato i favori degli utenti per l’intuitività e la facilità di utilizzo.

Fra i progetti di implementazione del pattern per Java, ActiveObject sembra quello più promettente. il suo comportamento risulterà familiare a chi ha utilizzato Ruby on Rails, Camping o altri framework basati sul modulo ActiveRecord:


public interface Person extends Entity {
    public String getFirstName();
    public void setFirstName(String firstName);
}
EntityManager em = new EntityManager(jdbcURI, username, password);
Person p = em.get(1);
System.out.println(p.getFirstName());

Molto simile al corrispondente in Ruby on Rails:


class Person < ActiveRecord::Base
end
puts Person.find(1).first_name

ActiveObject permette inoltre di generare il codice SQL necessario per la creazione della tabella corrispondente all’entità:


System.out.println(Generator.generate("../classes", "jdbc:mysql://localhost/db", " test.package.Person"));

Produce:


CREATE TABLE person (
    id INTEGER AUTO_INCREMENT,
    firstName VARCHAR(45),
    PRIMARY KEY(id)
);

ActiveObject attualmente supporta i seguenti database:

Database URI Protocol Support
Derby jdbc:derby
jdbc:derby://
Well tested and stable
HSQLDB jdbc:hsqldb
jdbc:hsqldb://
Stable
MS SQL Server 2005 and 2007
(Microsoft and JTDS drivers)
jdbc:sqlserver://
jdbc:jtds:sqlserver://
Stable
MySQL jdbc:mysql:// Well tested and very stable
Oracle jdbc:oracle:thin
jdbc:oracle:oci
Stable
PostgreSQL jdbc:postgresql:// Stable

Allo stato attuale il progetto non può vantare la stabilità e la completezza dell’implementazione ActiveRecord di Ruby on Rails o la diffusione e le funzionalità di Hibernate; tuttavia le prospettive di sviluppo sono ottime soprattutto considerando la possibilità di integrazione con Wicket, fortemente voluta dagli sviluppatori del progetto.

30 Agosto 2007
Categorie: Java

AddThis Social Bookmark Button

Articoli simili

Commenti

Comments are closed.