【问题标题】:Java: Hibernate and Embedded Derby; create derby on a other location/directoryJava:休眠和嵌入式德比;在其他位置/目录上创建 derby
【发布时间】:2011-06-21 17:43:55
【问题描述】:

我在 Google 上没有找到任何相关信息,但我认为这一定是可能的。

我的 Hibernate 项目遇到了一个严重的问题:

我有两个模块,一个主模块和一个工具模块。它们应该使用相同的 DB(嵌入式 Derby,因为两个模块不会同时启动)。

因此,如果我启动一个模块,它会在 Java 项目目录中创建数据库,但我不希望数据库在项目目录“上方”创建一个级别。 hibernate.cfg.xml、映射文件和DAO位于Main-Module中。

所以我希望它看起来像这样:

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

但实际上看起来是这样的:

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

这是我的休眠配置文件的相关部分:

<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>

感谢您的帮助。

【问题讨论】:

  • 还值得了解的是 derby.system.home - 您可以使用此系统属性来设置基本路径。然后 URL 可以只包含数据库名称

标签: java directory derby


【解决方案1】:

试试:

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

不确定,不过这是否可行。

【讨论】:

【解决方案2】:

在 Connection 之前设置属性“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);
}

【讨论】:

    【解决方案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>
    

    这会尝试,也许你会得到解决方案

    使用上面的代码,将有助于您的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2012-01-06
      相关资源
      最近更新 更多