从Grails连接到Oracle 12c数据库

从Grails连接到Oracle 12c数据库,oracle,hibernate,grails,Oracle,Hibernate,Grails,如何配置Grails web app以连接到一个简单的(一个表!)Oracle 12c数据库?我已经看过很多教程了,每一个都不是不完整就是过时了。我需要一个简单的,手持,一步一步的教程。我知道GORM是基于Hibernate的,不知怎么的,它都是在引擎盖下处理的,但是我不能让一个简单的连接工作。我浏览了Grails文档,但它似乎更喜欢H2和MySQL连接,而不是Oracle 所以我知道我必须修改DataSource.groovy,以替换默认的H2设置。下面是我为Oracle 12c数据库修改Da

如何配置Grails web app以连接到一个简单的(一个表!)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或其他任何方法将域类映射到数据库表。。。这就是我被困住的地方,我要么没有喝足够的咖啡,要么错过了什么

有人能帮忙吗


提前感谢。

您使用的是一种较旧的方言,“org.hibernate.dialogue.oracle10gdatalogue”就是您需要的。(至少对于连接到Oracle11gR2 DB的我而言)
根据我的经验,您使用的方言是Oracle9g和之前的版本。

您使用的是较旧的方言,“org.hibernate.dialogue.Oracle10gDialogue”是您需要的。(至少对于连接到Oracle11gR2 DB的我而言)
根据我的经验,您使用的方言是Oracle9g和之前的版本。

您使用的是较旧的方言,“org.hibernate.dialogue.Oracle10gDialogue”是您需要的。(至少对于连接到Oracle11gR2 DB的我而言)
根据我的经验,您使用的方言是Oracle9g和之前的版本。

您使用的是较旧的方言,“org.hibernate.dialogue.Oracle10gDialogue”是您需要的。(至少对于连接到Oracle11gR2 DB的我而言)
根据我的经验,您使用的方言是Oracle9g和之前的版本。

在使用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"
    }
}

}

在使用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"
    }
}

}

在使用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"
    }
}

}

在使用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"
    }
}

}

修改Datasource.groovy就足以连接到所需的数据库。那么,连接的实际问题是什么?有错误/异常吗?顺便说一下,如果在数据源全局属性中定义属性,则不必在环境中重新定义它blocks@lukelazarovic-java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接修改Datasource.groovy足以连接到所需的数据库。那么,连接的实际问题是什么?有错误/异常吗?顺便说一下,如果在数据源全局属性中定义属性,则不必在环境中重新定义它blocks@lukelazarovic-java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接修改Datasource.groovy足以连接到所需的数据库。那么,连接的实际问题是什么?有错误/异常吗?顺便说一下,如果在数据源全局属性中定义属性,则不必在环境中重新定义它blocks@lukelazarovic-java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接修改Datasource.groovy足以连接到所需的数据库。那么,连接的实际问题是什么?有错误/异常吗?顺便说一下,如果在数据源全局属性中定义属性,则不必在环境中重新定义它blocks@lukelazarovic-java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接,使用该方言解决了一个问题。我还精简了开发、测试和生产设置,以便它们继承默认的池、drivercassname、用户名和密码。我知道这些在现实生活中会有所不同,但继承属性似乎也解决了这个问题。谢谢,使用这种方言解决了一个问题。我还精简了开发、测试和生产设置,以便它们继承默认的池、drivercassname、用户名和密码。我知道这些在现实生活中会有所不同,但继承属性似乎也解决了这个问题。谢谢,使用这种方言解决了一个问题。我还精简了开发、测试和生产设置,以便它们继承默认的池、drivercassname、用户名和密码。我知道这些在现实生活中会有所不同,但继承属性似乎也解决了这个问题。谢谢,使用这种方言解决了一个问题。我还精简了开发、测试和生产设置,以便它们继承默认的池、drivercassname、用户名和密码。我知道这些在现实生活中会有所不同,但继承属性似乎也解决了这个问题。