如何在OpenShift上使用Hibernate连接MySQL数据库

时间:2015-02-09 21:12:41

标签: mysql hibernate openshift

我刚刚在OpenShift上创建了一个数据库,我试图使用Hibernate。 我的配置文件如下:

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/mytomcatapp</property>

<property name="hibernate.connection.username">username</property> 
<property name="hibernate.connection.password">pwd</property>

但它不起作用。 当我打印我的env变量时,结果是:

OPENSHIFT_MYSQL_DB_HOST:127.11.10.2 OPENSHIFT_MYSQL_DB_PORT:3306 OPENSHIFT_MYSQL_DB_USERNAME:用户名OPENSHIFT_MYSQL_DB_PASSWORD:passwd OPENSHIFT_MYSQL_DB_URL:mysql://用户名:pwd@127.11.10.2:3306 /

有什么不对吗?

1 个答案:

答案 0 :(得分:2)

这是错误的:应用程序将配置文件用作文本,而不是代码。

要解决此问题,您可以在Spring中使用动态Hibernate配置。

以下是如何执行此操作的示例:Script Security + Hibernate Anotation Example

如果使用openshift,您需要对AppConfig.java文件进行一些更改:

@Bean(name = "dataSource")
public BasicDataSource dataSource() {   
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    String host = System.getenv("OPENSHIFT_MYSQL_DB_HOST");
    String port = System.getenv("OPENSHIFT_MYSQL_DB_PORT");
    String name = "mytomcatapp";
    String url = "jdbc:mysql://" + host + ":" + port + "/" + name;
    ds.setUrl(url);
    ds.setUsername("username");
    ds.setPassword("pwd");
    return ds;
}