I’ve a main method using SchemaUpdate to display at the console what tables to alter/create and it works fine in my Hibernate project:
public static void main(String[] args) throws IOException {
//first we prepare the configuration
Properties hibProps = new Properties();
hibProps.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("jbbconfigs.properties"));
Configuration cfg = new AnnotationConfiguration();
cfg.configure("/hibernate.cfg.xml").addProperties(hibProps);
//We create the SchemaUpdate thanks to the configs
SchemaUpdate schemaUpdate = new SchemaUpdate(cfg);
//The update is executed in script mode only
schemaUpdate.execute(true, false);
...
I’d like to reuse this code in a JPA project, having no hibernate.cfg.xml file (and no .properties file), but a persistence.xml file (autodetected in the META-INF directory as specified by the JPA spec).
I tried this too simple adaptation,
Configuration cfg = new AnnotationConfiguration();
cfg.configure();
but it failed with that exception.
Exception in thread "main" org.hibernate.HibernateException: /hibernate.cfg.xml not found
Has anybody done that?
Thanks.
Kariem is on the right track, but let me attempt to clarify.
Let’s assume that you have a vanilla JPA-standard configuration with nothing Hibernate-specific, except for the Hibernate jars on the classpath. If you are running in J2SE bootstrap mode, you already have some code that looks something like this, either in Java or as Spring configuration, etc.:
To run SchemaUpdate, simply use this instead:
I’m not sure how this would operate in a container environment, but in a simple J2SE or Spring type of configuration, that’s all there is to it.