/ / Java: Hibernate and Embedded Derby; utwórz derby w innej lokalizacji / katalogu - java, katalogu, derby

Java: Hibernate and Embedded Derby; utwórz derby na innej lokalizacji / katalogu - java, katalog, derby

Nic nie znalazłem w Google, ale myślę, że jest to coś, co musi być możliwe.

Mam poważny problem z moim projektem hibernacji:

Mam dwa moduły, jeden moduł główny i jeden moduł narzędziowy. Powinny używać tego samego DB (osadzonego Derby, ponieważ oba moduły nie byłyby uruchamiane w tym samym czasie).

Więc jeśli uruchomię moduł, tworzy on DB w JavieProject-Directory, ale nie chcę, żeby DB utworzyło poziom „ponad” katalogiem projektów. Hibernacja.cfg.xml, Pliki mapowania i DAO znajdują się w module głównym.

Więc chcę, żeby wyglądało tak:

`rootDirecotry
|
+----myEmbeddedDerby
|
+----MainModule
|
+----ToolModule

Ale tak naprawdę wygląda to tak:

`rootDirecotry
|
+----MainModule
|     |
|     +----myEmbeddedDerby
|
|
+----ToolModule
|     |
|     +----myEmbeddedDerby

To jest odpowiednia część mojego hibernacyjnego pliku konfiguracyjnego:

<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
<property name="hibernate.connection.password">password/property>
<property name="hibernate.connection.url">jdbc:derby:myEmbeddedDB;create=true</property>
<property name="hibernate.connection.username">admin</property>
<property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

Byłbym wdzięczny za pomoc.

Odpowiedzi:

2 dla odpowiedzi № 1

Przed połączeniem ustaw właściwość „derby.system.home”.

private void setDerbyDBSystemDir() {
// Decide on the Derby db system directory: <userhome>/.anotherDir/for/DerbyDB
String systemDir = "./anotherDir/for/DerbyDB";

// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
System.err.println("setDBSystemDir: derby.system.home="+systemDir);
}

1 dla odpowiedzi nr 2

Próbować:

<property name="hibernate.connection.url">jdbc:derby:../myEmbeddedDB;create=true</property>

Nie jestem pewien, czy to zadziała.


1 dla odpowiedzi nr 3
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
org.apache.derby.jdbc.ClientDriver
</property>
<property name="hibernate.connection.url">
jdbc:derby://localhost:<port-No>/<dbName>;create=true
</property>
<property name="hibernate.connection.username">admin</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Mapping files -->
<mapping resource="/src/com/hbm/***.hbm.xml"/>
</session-factory>
</hibernate-configuration>

Spróbuje, możesz dostać rozwiązanie

Zastosowanie powyższego kodu pomoże w rozwiązaniu problemu.