JOOQ: generazione ORM via maven

di: Alfredo Serafini     16 Gennaio 2012

Dopo aver presentato in linea generale la libreria JOOQ nell'articolo precedente, ci dedicheremo stavolta a mostrare un esempio molto semplice di generazione automatica delle classi di mappatura ORM con maven.
Le classi per l'Object Relational Mapping risultano molto utili per semplificare la scrittura di codice pseudo-SQL, utilizzando le api di un linguaggio di programmazione ad oggetti come java, o eventualmente una specifica DSL implementata tramite il linguaggio scala, nel caso della libreria JOOQ.

Generazione delle factory per Object Relational Mapping.

Ci interessa a questo punto fare uso del mapping ad oggetti di JOOQ. A tal proposito nella libreria è presente una opportuna classe (org.jooq.util.DefaultGenerator).

La classe può essere utilizzata da linea di comando in maniera del tutto simile alla seguente:

>> java 
	-classpath 
		lib/jooq-2.0.0.jar:
		lib/jooq-meta-2.0.0.jar:
		lib/jooq-codegen-2.0.0.jar:
		lib/mysql-connector-java-5.1.18.jar:
		.
	org.jooq.util.GenerationTool /hotel.properties

dove abbiamo cercato di formattare il comando per renderlo più leggibile: ovviamente andrà scritto invece su una sola riga, preoccupandoci di utilizzare i path corretti per le librerie relative (nel nostro esempio si fa riferimento ad una invocazione su console linux, dalla quale sia raggiungibile una directory "lib") contenente le librerie.

L'elemento fondamentale di questa procedura assistita è il file di properties hotel.properties, contenente le configurazioni minime perché possano essere prodotte le classi di mapping sul database dell'esempio introdotto nel precedente articolo:

jdbc.Driver=com.mysql.jdbc.Driver
jdbc.URL=jdbc:mysql://localhost:3306/hotel
jdbc.User=root
jdbc.Password=root
generator=org.jooq.util.DefaultGenerator
generator.database=org.jooq.util.mysql.MySQLDatabase
generator.database.input-schema=hotel
generator.database.includes=.*
generator.database.excludes=
generator.generate.relations=true
generator.target.package=it.html.articoli.esempi.jooq.generated
generator.target.directory=src/main/java
(il file hotel.properties)

Le classi prodotte avranno la struttura:

Figura 1. classi generate con JOOQ
(clic per ingrandire)

classi generate con JOOQ

All'interno di questa struttura è infine abbastanza facile riconoscere la presenza di una classe per ogni tabella, e di una tabella "Tables" che contiene un riferimento statico a ciascuna delle tabelle prodotte automaticamente (una sorta di bean): questo ci permetterà -come vedremo tra poco- di semplificare la scrittura assistita di SQL per mezzo delle api appena prodotte tramite la code generation che abbiamo lanciato.

Una classe di particolare interesse è infine la HotelFactory: in generale verrà creata una factory principale per ogni database di default, anche se è possibile modificare questo comportamento agendo sulla configurazione.

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti