The Tapestry Hibernate Library is responsible for configuring Hibernate for you. This is done in a just-in-time manner, the first time a Hibernate Session is required.
One way to configure hibernate is to create a hibernate.cfg.xml file and place it in the root of your application (i.e., under src/main/resources). Most Hibernate-specific configuration occurs in this file. Another way is to contribute objects that perform configuration (such as setting event listeners). Example:
public static void contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> config)
{
config.add("Widget", new WidgetHibernateConfigurer());
}Note that the configuration is an OrderedConfiguration. The library contributes two configurers by default:
This configuration is a set of package names, identifying where to search for entity classes.
For each package contributed, the library will:
By default, the package application-root-package.entities is scanned as described above. If you have additional packages containing entities, you must contribute them to the tapestry.hibernate.HibernateEntityPackageManager service configuration.
Example:
public static void contributeHibernateEntityPackageManager(Configuration<String> configuration)
{
configuration.add("org.example.myapp.domain");
}You may add as many packages in this manner as you wish. This option is most often used when the entities themselves are contained in a library included within an application, rather than part of the application directly.
The Hibernate integration includes a number of symbols used to control certain features: