【问题标题】:Connect to Oracle 12c Database from Grails从 Grails 连接到 Oracle 12c 数据库
【发布时间】:2014-06-12 07:26:09
【问题描述】:

如何配置 Grails Web 应用程序以连接到一个简单的(一个表!)Oracle 12c 数据库?我已经阅读了很多教程,每个教程要么不完整,要么已经过时。我需要一个简单的、手把手的、循序渐进的教程。我知道 GORM 是基于 Hibernate 的,不知何故,这一切都在幕后得到了照顾,但我无法让简单的连接正常工作。我浏览了 Grails 文档,但它似乎更喜欢 H2 和 MySQL 连接,而不是真正的 Oracle。

所以我知道我必须修改 DataSource.groovy,以替换默认的 H2 设置。下面是我为我的 Oracle 12c 数据库修改 DataSource.groovy 的尝试:

dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.driver.OracleDriver"
    username = "scott"
    password = "Sc0ttSc0tt"
    dialect = "org.hibernate.dialect.OracleDialect"
}

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
    temp.use_jdbc_metadata_defaults = false
}

// environment specific settings
environments {
    development {
        dataSource {
            pooled - true
            dialect = "org.hibernate.dialect.OracleDialect"
            driverClassName = 'oracle.jdbc.OracleDriver'
            username = 'scott'
            password = 'Sc0ttSc0tt'
            url = "jdbc:oracle:thin:@192.168.0.105:1521:orcl"
            dbCreate = "validate" // one of 'create', 'create-drop', 'update', 'validate', ''           
        }
    }

    test {
        dataSource {
            pooled = true
            dialect = "org.hibernate.dialect.OracleDialect"
            driverClassName = 'oracle.jdbc.OracleDriver'
            username = 'scott'
            password = 'Sc0ttSc0tt'
            url = 'jdbc:oracle:thin:@192.168.0.105:1521:orcl'
            dbCreate = 'validate'
        }
    }

    production {
        dataSource {
            pooled = true
            dialect = "org.hibernate.dialect.OracleDialect"
            driverClassName = 'oracle.jdbc.OracleDriver'
            username = 'scott'
            password = 'Sc0ttSc0tt'
            url = 'jdbc:oracle:thin:@192.168.0.105:1521:orcl'
            dbCreate = 'validate'
        }
    }
}

然后我明白我可以以某种方式使用“脚手架”或 GORM 或其他任何方式将域类映射到数据库表......这是我卡住的地方,要么没有喝足够的咖啡,要么错过了一些东西。

有人可以帮忙吗?

提前致谢。

【问题讨论】:

  • 修改 Datasource.groovy 足以连接到您需要的数据库。那么连接的实际问题是什么?有任何错误/异常吗?
  • 顺便说一下,如果在dataSource全局属性中定义属性,就不用在环境块中重新定义了
  • @lukelazarovic - java.sql.SQLRecoverableException: IO 错误:网络适配器无法建立连接

标签: oracle hibernate grails


【解决方案1】:

您使用的是较旧的方言,“org.hibernate.dialect.Oracle10gDialect”是您需要的。 (至少对我来说连接到 Oracle11gR2 数据库) 根据我的经验,您使用的方言适用于 Oracle9g 及之前的版本。

【讨论】:

  • 谢谢,使用该方言解决了一个问题。我还精简了开发、测试和生产设置,以便它们继承默认的池、驱动程序类名称、用户名和密码。我知道这些在现实生活场景中会有所不同,但继承的属性似乎也解决了这个问题。
【解决方案2】:

在玩弄了 Datasource.groovy 文件并进行了上述 mwaisgold 推荐的更改后,我终于得到了以下格式的工作:

dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "scott"
    password = "Sc0ttSc0tt"
}

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
    //    cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
    temp.use_jdbc_metadata_defaults = false
}

// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            dialect = "org.hibernate.dialect.Oracle10gDialect"
            url = "jdbc:oracle:thin:@192.168.0.103:1521:orcl"           
        }
    }

test {
    dataSource {
        dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
        dialect = "org.hibernate.dialect.Oracle10gDialect"
        url = "jdbc:oracle:thin:@192.168.0.103:1521:orcl"               
    }
}

production {
    dataSource {            
        dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
        dialect = "org.hibernate.dialect.Oracle10gDialect"
        url = "jdbc:oracle:thin:@192.168.0.103:1521:orcl"
    }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 2018-08-08
    • 2014-06-08
    • 1970-01-01
    • 2021-07-11
    • 2016-03-05
    • 2020-05-12
    • 1970-01-01
    相关资源
    最近更新 更多