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.
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
Le classi prodotte avranno la struttura:
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.
|
AppFuse: realizzare un'applicazione completa (implementare i servizi) |
Guida Apache StrutsIl primo e più utilizzato tra i framework MVC del mondo Java,... |
Guida Java SpringScoprire il lightweight container più famoso del mondo Java.... |
Guida Java 6Prendendo le mosse dalla guida Java, già presente su HTML.it,... |
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
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |