プロジェクトで Apache Cayenne を使用する予定ですが、実際に正しくセットアップするのに苦労しています。
Cayenne チュートリアルは、CayenneModeller でデータベースの場所を設定する方法を示しています。私の問題は、実行時に動的に決定されるパスで Apache Derby を使用したいのですが、実際に Cayenne にそのパスを使用させる方法がわかりません。
私は次のようにパスを設定しようとしました:
private static boolean setupDataBase() {
String path = Globals.USER_DATA_DIRECTORY + File.separator + "db";
try {
DataSource dataSource = new PoolManager(
"org.apache.derby.jdbc.EmbeddedDriver",
"jdbc:derby:" + path + ";create=true",
1,
1,
null,
null
);
Configuration configuration = Configuration.getSharedConfiguration();
DataDomain domain = configuration.getDomain();
DataNode node = domain.getNode("MaciNode");
node.setDataSource(dataSource);
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
しかし、後で を呼び出すとDataContext.createDataContext()
、コンソールのログに次のように表示されます。
情報: 接続プールが作成されました: jdbc:derby:memory:testdb;create=true
これは、私が設定したものではなく、CayenneModeller で設定したインメモリ テスト URL ですsetupDataBase
(はい、そのメソッドが呼び出されるようにしました)。また、データベース ファイルは作成されません (パスが正しいことをデバッガーで確認しました)。
では、この問題に対する標準的な解決策は何ですか?