设置“ derby.system.home”系统属性是否可以替代?

时间:2019-12-14 01:35:58

标签: java derby

因此,我正在使用derby进行患者管理学习项目。我正在使用以下代码为derby的数据库写位置设置系统属性。

 Path path = Paths.get(System.getProperty("user.home"), "patient_management_databases");
 System.getProperties().setProperty("derby.system.home", path.toString());
 log.info(String.format("Set derby home to '%s'.", path.toString()));

我的问题是,对于打算在生产中分发和使用的应用程序,这是否是一种好的做法?更改derby的原位可能会导致其他使用derby的应用程序出现问题(我假设所有derby应用程序都将访问此属性)。有没有一种方法只能为此应用程序设置路径?它被保存到我的项目文件夹中,由于IDE索引并且使用VCS时必须忽略它们,因此这是不理想的。

2 个答案:

答案 0 :(得分:1)

我可以通过以下代码获得想要的行为:

private final Path databaseDirectory = Paths.get(System.getProperty("user.home"), "patient_management_databases");
String.format("jdbc:derby:%s/%s;create=true", databaseDirectory.toString(), databaseName);

答案 1 :(得分:0)

使用System.getProperty("user.home")是抽象系统路径的文件相关性质的一种好方法。使用Java的Paths抽象也是朝着正确方向将应用程序与底层文件系统分离的又一步。因此,到目前为止,您所采取的步骤是好的,并且可能足以满足您的用例。

但是,有多种方法可以使derby.system.home变量可用于您的应用程序,并且它们在实用性和简单性方面都各不相同。我不可能全部描述它们,但我建议您还尝试一下一个配置文件,您可以使用不同的机制加载该文件-从文件系统,类路径,甚至从远程服务器等。