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
Articoli simili
- Il futuro prossimo di jRuby
- Rilasciato jRuby 1.0
- jRuby - Nuovo slancio a Ruby e Rails nel mondo Enterprise
- Rails 2.1 e ottimizzazione Active Record
- Rails 2.1 dietro l'angolo