## Datagen - Design rationale

In questo capitolo sono descritti i razionali di design con cui viene generato il codice che realizza lo strato di accesso ai dati.

Tipicamente la modellazione dello strato di accesso ai dati è costituita da due modelli:

- il modello dello schema relazionale da accedere
- il modello dell'accesso vero e proprio a tali dati

Per i dettagli relativi alla struttura interna dei modelli si faccia riferimento all'apposito paragrafo [metamodel reference]

### Struttra del codice generato

Il generatore DATAGEN genera i seguenti componenti software:

- uno strato di dto - data transfer object che rappresentano la visione java del singolo record della singola tabella dello schema relazionale
- uno strato di dao - data access object che rappresentano gli oggetti che realizzano l'effettivo accesso al database e hanno come oggetti di frontiera proprio i dto
: questi oggetti sono implementati come bean spring e sono gli oggetti che devono essere utilizzati dalla business logic.
- una serie di classi-libreria che realizzano alcune funzioni comuni a tutti i dao (come ad esempio la costruzione della query in base agli esempi, nel meccanismo di query by example)

Poichè il modello dello strato di accesso ai dati è suddiviso in package, questa strutturazione è mantenuta anche nell'alberatura del codice generato.

Essendo i dao dei bean di spring, il generatore genera anche la apposita configurazione xml.

### Inclusione del codice generato nel progetto principale

DATAGEN è nato per generare le classi che realizzano lo strato di accesso ai dati all'interno di un progetto complessivo che ha bisogno di implementare tale strato. Di conseguenza è necessario fare in modo che DATAGEN generi i propri artefatti in modo coerente con l'alberatura del progetto principale. Per permettere ciò è necessario impostare adeguatamente alcune property al momento del richiamo della cartuccia di generazione. Per i dettagli vedere la documentazone delle cartridge previste.