Howto create customized EntityManagerFactory [message #651358] |
Sat, 29 January 2011 19:18 |
Nepomuk Seiler Messages: 88 Registered: December 2010 |
Member |
|
|
Hi,
As I'm using derby in embedded mode and I want to set programmatically
where my db is stored, I needed to create a my EntityManagerFactory via
PersistenceProvider.createEntityManagerFactory(name, props);
So, how to get this? The Gemini JPA Sample told me to register a ServiceTracker
on EntityManagerFactory.class which let's me access EntityManagerFactories
only configured via the persistence.xml.
The Answer:
Just use another ServiceTracker for javax.persistence.spi.PersistenceProvider.class.getName().
Gemini JPA is acting the same way.
public void start(final BundleContext context) throws Exception {
super.start(context);
plugin = this;
providerTracker = new ServiceTracker(context, PersistenceProvider.class.getName(), new ServiceTrackerCustomizer() {
@Override
public void removedService(ServiceReference reference, Object service) {
}
@Override
public void modifiedService(ServiceReference reference, Object service) {
}
@Override
public Object addingService(ServiceReference reference) {
PersistenceProvider provider = (PersistenceProvider) context.getService(reference);
EntityManagerFactory emf = provider.createEntityManagerFactory("PUnit", new Properties());
emf.createEntityManager();
return provider;
}
});
providerTracker.open();
}
Soon I will upload my custom JPAUtil class which will hopefully give a good idea on how you
could manage your PersistenceProvider.
-Muki
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03656 seconds