How to set hibernate.hbm2ddl.auto in Spring with Annotations and pure Java

僤鯓⒐⒋嵵緔 提交于 2019-12-08 21:26:35

问题


How would one go about setting up the following in Spring using only Java and annotations.

<property name="hibernate.hbm2ddl.auto" value="update"/>

I amIt should be possible and I do believe it is a lot cleaner to make projects xml free.

PS: This shouldn't be important but I'm running this on Heroku.


回答1:


Added this to the class where the dataSource() is and it fixed my issue.

final Properties hibernateProperties() {
    final Properties hibernateProperties = new Properties();

    hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "update");
    hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
    hibernateProperties.setProperty("hibernate.show_sql", "true");

    return hibernateProperties;
}

Full example is here https://github.com/arose13/Heroku-Spring-Postgres-Example.

EDIT PS: For this line hibernateProperties.setProperty("hibernate.hbm2ddl.auto","update"); check out this stackoverflow question to figure out the best value if update isn't right for you.




回答2:


I don't think there is a ready to use annotation for Java for hbm2ddl out of the box.

Hibernate uses the standard Java Persistance Annotations (JPA) plus some Hibernate extension annotations.

See: https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/

Generally I would rather recommend you externalise the setting in a property file rather then hardcoding it in the Java class. Practically auto schema generation is usually something you would only do during test/staging. So you might have different environments with different settings for this.



来源:https://stackoverflow.com/questions/32897640/how-to-set-hibernate-hbm2ddl-auto-in-spring-with-annotations-and-pure-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!