
Selezionate entrambi le scelte EMF SDK and Teneo EMF Hibernate SDK e poi premete Next e seguite lo wizard per installare nuove features.
Restart Eclipse at the end of the installation.
Creare il progetto EMF
Ora creaiamo un nuovo progetto di tipo EMF. Dal menu File -> New -> Other..., espandetela voce Eclipse Modeling Framework e scegliete Empty EMF Project.

Premendo Next, è possibile specificare il nome di un progetto (es. MyModel); premere Finish per finire.
Creare il modello Ecore
Il primo step, dopo aver creato un nuovo progetto è definire il modello Ecore. Selezionate la cartella model (generata dallo wizard appena utilizzato per creare il progetto EMF vuoto), tasto destro, New -> Other... e selezionate Ecore Model sotto Eclipse Modeling Framework

Infine premete Next e scegliete un nome per l'Ecore Model o lasciate quello proposto (My.ecore) e premete Finish.
Espandete la root dell'albero dell'Ecore Model e selezionare l'unico figlio senza nome.

Usando il tasto destro del mouse potrete selezionare la voce Show Properties View, che aprirà la view di properties come mostrato qui sotto. Inserite "orders" come Name ed NS Prefix, mentre come NS URI inserite"http://orders".

Fate tasto destro sul nodo orders e scegliete New Child -> EClass

Selezionando il figlio appena creato, dalla view di Property potete inserire "Customer" come Name

Ancora, facendo tasto destro su Customer e selezionando New Child -> EAttribute

selezionate il nuovo figlio e dalla view di Properties inserite "code" come Name e EString come Etype

Allo stesso modo inserite un altro attributo (EAttribute) chiamato "name" di tipo EString e premete Ctrl+s per salavare il lavoro.
Creare il Generator Model
Dalla view del
Package Explorer selezionate il file Ecore (es.
My.ecore), fate click col tasto destro
New -> Other... e scegliete
EMF Generator Model sotto
Eclipse Modeling Framework
poi premete
Next e inserite un nome per il Generator Model EMF o lasciate quello proposto (
My.genmodel), premete
Next, selezionate
Ecore Model nella lista
Model Importer, e poi
Next 
premete il bottone Load nello step Ecore Import e poi Next e Finish.

Adesso dall'editor del Generator Model appena aperto, fate tasto destro Generate Model Codel

Usare EMF-Teneo per la persistenza sul Database e l'accesso al Model
Prima di invocare le operazioni di persistenza sul modello EMF appena creato, abbiamo bisogno di inserire alcune dipendenze nel nostro porgetto. Aprite il file plugin.xml dalla view del Package Explorer e selezionate il tab Dependencies. Premete il bottone Add... nell'area in alto a sinistra (Required Plug-ins) e aggiungete i seguenti bundles:
- org.eclipse.emf.ecore.xmi
- org.eclipse.emf.teneo.hibernate
- org.apache.commons.logging

Abbiamo anche bisogno di inserire la dipendenza da alcuni Jars non inclusi nell'ambiente Eclispe. Creiamo una cartella normale per le librerie esterne (New -> Folder), e chiamiamola "lib".
Le librerie necessarie sono tutte incluse nel package Hibernate Core, scaricabile da http://www.hibernate.org/downloads.html.
-
hibernate3.jar -
jta-1.1.jar (/lib/required)
-
dom4j-1.6.1.jar (/lib/required)
-
commons-collections-3.1.jar (/lib/required)
Copiate i JARs riportati qui sopra, insieme con il driver JDBC (nell'esempio useremo MySQL per i nostri test),
-
mysql-connector-java-5.1.7-bin.jar nella cartella lib.
Ora andate nel plugin.xml, selezionate il tab Runtim, andate nell'area per il Classpath (in basso a destra),premete il bottone Add..., cercate la cartella lib e aggiungete tutti i JARs.

Volendo testare le caratteristiche di persistenza di EMF e Teneo, creeremo una nuova cartella sorgenti nel nostro progetto (New -> Source Folder) che chiameremo "src_test" ed in cui creeremo un nuovo package e una nuova classe con un metodo main con questo codice:
import java.util.Properties;
import orders.Customer;
import orders.OrdersPackage;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.teneo.hibernate.HbDataStore;
import org.eclipse.emf.teneo.hibernate.HbHelper;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Environment;
...
HbDataStore hbds = (HbDataStore)HbHelper.INSTANCE.createRegisterDataStore("MyDb");
final Properties props = new Properties();
props.setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver");
props.setProperty(Environment.URL, "jdbc:mysql://127.0.0.1:3306/test");
props.setProperty(Environment.USER, "root");
props.setProperty(Environment.PASS, "admin");
props.setProperty(Environment.DIALECT, org.hibernate.dialect.MySQLInnoDBDialect.class.getName());
props.setProperty(Environment.SHOW_SQL, "true");
hbds.setProperties(props);
hbds.setEPackages(new EPackage[]{OrdersPackage.eINSTANCE});
hbds.initialize();
SessionFactory sessionFactory = hbds.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
tx.begin();
Customer customer = OrdersPackage.eINSTANCE.getOrdersFactory().createCustomer();
customer.setCode("0023485");
session.save(customer);
tx.commit();
session.close();
Infine lanciamo la classe e stiamo a vedere cosa succede al db..
Commenti