代码之家  ›  专栏  ›  技术社区  ›  Alvin

休眠数据库连接配置

  •  1
  • Alvin  · 技术社区  · 16 年前

    我还尝试将直接JDBC配置与JNDI配置一起放入配置文件中,但是看起来hibernate总是倾向于JNDI而不是直接JDBC配置(如果两者都存在的话)。

    我不能一直访问服务器,所以我想我应该在服务器时间窗口之前问这个问题。

    提前谢谢。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Pascal Thivent    16 年前

    我们有两个不同的服务器环境使用相同的Hibernate配置。

    • 把所有共同点都放进去 hibernate.cfg.xml
    • 把具体的东西放进去 hibernate.properties 文件并将“正确的”放在每个应用程序的类路径的根目录中(但是

    例如,这将是 属性文件 对于“JNDI环境”:

    hibernate.connection.datasource = java:/comp/env/jdbc/test
    hibernate.transaction.factory_class = org.hibernate.transaction.JTATransactionFactory
    hibernate.transaction.manager_lookup_class = org.hibernate.transaction.JBossTransactionManagerLookup
    hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
    

    对于“非JNDI环境”:

    hibernate.connection.driver_class = org.postgresql.Driver
    hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
    hibernate.connection.username = myuser
    hibernate.connection.password = secret
    hibernate.c3p0.min_size=5
    hibernate.c3p0.max_size=20
    hibernate.c3p0.timeout=1800
    hibernate.c3p0.max_statements=50
    hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
    
        2
  •  1
  •   Brian Deterling    16 年前

    使用配置文件中的URL方法。在代码中,手动尝试使用上下文.查找("java:comp/env/。。。"). 如果成功,请设置Hibernate数据源属性并取消设置与url相关的属性。如果失败,让hiberate继续url配置。

    if (jndiDataSourceExists()) {
      configuration.setProperty(Environment.DATASOURCE, "jdbc/jndiname")
      configuration.setProperty(Environment.URL, null);
    }
    configuration.buildSessionFactory();
    
    推荐文章