Step 2: Create and store EMF Objects
- Hibernate database configuration
- Initialize runtime layer
- Obtain a SessionFactory and start a Transaction.
- Create and populate Library
- Commit Transaction and close Session
- Next Step
The complete code for this tutorial can be found here: Tutorial1.java.
Hibernate database configuration
To let Hibernate access your database, you must specify the JDBC driver, database URL, username/password and the database-specific dialect to use. These settings are specified using the standard Properties mechanism.
Teneo allows you to configure Hibernate in two ways:
- Automatically: by placing the properties in the file "hibernate.properties" in a root directory of the classpath. We use this method in this tutorial.
- Programmatically: by creating a Properties instance and using HbDataStore.setProperties().
A sample hibernate.properties file is shown below:
hibernate.connection.driver_class=org.hsqldb.jdbcDriver hibernate.connection.url=jdbc:hsqldb:hsql://127.0.0.1/library hibernate.connection.username=sa hibernate.connection.password= hibernate.dialect=org.hibernate.dialect.HSQLDialect
Example hibernate.properties:
Note that Hibernate has many more configuration properties. For more information see the Hibernate reference documentation.
Initialize runtime layer
Create and initialize the runtime Hibernate EMF layer as follows:
// Create the DataStore.
final String dataStoreName = "LibraryDataStore";
final HbDataStore dataStore = HbHelper.INSTANCE.createRegisterDataStore(dataStoreName);
// Configure the EPackages used by this DataStore.
dataStore.setEPackages(new EPackage[] { LibraryPackage.eINSTANCE });
// Initialize the DataStore. This sets up the Hibernate mapping and
// creates the corresponding tables in the database.
dataStore.initialize();
Obtain a SessionFactory and start a Transaction.
The SessionFactory, Session and Transaction are the familiar Hibernate entry points:
final SessionFactory sessionFactory = dataStore.getSessionFactory(); // Open a new Session and start Transaction. Session session = sessionFactory.openSession(); session.beginTransaction();
Create and populate Library
// Create a Library.
Library library = LibraryFactory.eINSTANCE.createLibrary();
library.setName("My Library");
// Make it persistent.
session.save(library);
// Create a writer...
Writer writer = LibraryFactory.eINSTANCE.createWriter();
writer.setName("JRR Tolkien");
// ...and one of his books.
Book book = LibraryFactory.eINSTANCE.createBook();
book.setAuthor(writer);
book.setPages(305);
book.setTitle("The Hobbit");
book.setCategory(BookCategory.SCIENCE_FICTION);
// Add the Writer and Book to the Library. They are made
// persistent automatically because the Library is itself
// already persistent.
library.getWriters().add(writer);
library.getBooks().add(book);
Commit Transaction and close Session
The Library is not stored in the database until you commit the Transaction:
session.getTransaction().commit(); session.close();
Next Step
In the next step of this tutorial we retrieve the Library from the database and add a new Book and Writer.
Click here to go to the next step.

