如何使用Hibernate透明地连接到不同的数据库(开发/测试/生产)

Nic*_*tar 5 java configuration hibernate

我有几个用于不同环境的不同数据库,可将应用程序连接到该数据库。这些对于每个安装都是恒定的,但是它们之间是不同的。换句话说,有

  1. 连接到开发数据库的开发环境
  2. 最终连接到测试数据库的测试环境
  3. 具有自己数据库的生产环境

Hibernate是通过Annotations使用的,代码不会“知道”它在哪个环境中运行。所有数据库都是mySQL驱动的,但是url,用户名和密码不同。

目前,我从应用程序中删除了hibernate.cfg.xml并将其移至应用程序服务器用户的主目录,但是出于安全原因,这似乎不是一个很好的解决方案,因为这引入了手动更新任何更新环境时更改了映射。

我真的希望有更好的解决方案,但找不到。

Tho*_*4no 3

您可以将 hibernate.cfg.xml 捆绑在 .jar 中,也可以使用 JPA (persistence.xml) 方法,该方法允许您拥有不同的“持久性单元”,然后您可以根据您想要的任何变量进行选择(例如,您家中的属性文件)。有关 persistence.xml 的示例,请参阅http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/configuration.html#setup-configuration-packaging 。