使用方法:Grails 3.0.2 + Oracle Database 12c?

时间:2015-06-29 21:50:17

标签: oracle grails jdbc

我正在使用Grails开始我的第一步,并尝试使用Oracle Database 12c创建一个hello world应用程序。

不幸的是,www.grails.org上关于数据库特定部分的教程文档似乎并不那么全面(例如Ruby on Rails的例子,我现在使用了几年) - 特别是当涉及非H2时数据库。

是否有一些关于如何使用Oracle Database 12c启动和运行Grails 3.0.2应用程序的最新教程?

主要是我感兴趣的a)放置相应JDBC驱动程序的位置和b)数据库配置应该如何。

对于a)

grails.org谈论" lib"目录但不解释,它存在或应该创建的位置。其他消息来源说," lib"目录已过时,因为几个Grails版本和JDBC驱动程序应该通过某些存储库的依赖项加载 - 这显然不适用于闭源Oracle JDBC驱动程序。

对于b)

目前,我已在{12}的{12}创建基本数据库配置:

vecs.iter().flat_map(|x| x.iter().map(Clone::clone)).collect()

这对于一个简单的hello world应用程序来说应该足够吗?

到目前为止我在网上找到的所有内容都已过时,无论是在Grails方面(涵盖版本2.x oder 1.x)和/或Oracle方面(涵盖版本10 * oder 11 *)。

感谢任何提示!

更新(仅用于记录并汇总以下评论):

1)

修改<my-app>/grails-app/conf/DataSource.groovy

dataSource {
        url = "jdbc:oracle:thin:@my-server:my-port:my-sid"
        driverClassName = "oracle.jdbc.OracleDriver"
        dialect = "Oracle10gDialect"
        username = "my-user"
        password = "my-pass"
}

2)

获取适合您的JDK和Oracle DB版本的相应Oracle JDBC驱动程序。就我而言(openJDK 7 + Oracle 12c),这是来自Oracle网站的ojdbc7.jar版本12.1.0.2.0:http://www.oracle.com/technetwork/database/features/jdbc/index.html

3)

将此JDBC驱动程序放在<myapp>/grails-app/conf/application.yml中(如果该目录尚不存在,则创建此目录)。

4)

将此JDBC驱动程序的详细信息添加到hibernate: jdbc: use_get_generated_keys: true (...) dataSource: pooled: true jmxExport: true driverClassName: oracle.jdbc.OracleDriver username: <myuser> password: <mypassword> (...) environments: development: dataSource: dbCreate: create url: jdbc:oracle:thin:@<myserver>:<myport>:<mysid> (...) 的依赖项部分(必要时进行修改以适合您的环境/版本):

<myapp>/lib

5)

创建Maven工件(必要时进行修改以适合您的环境/版本):

<myapp>/build.gradle

6)

将JDBC驱动程序的路径添加到CLASSPATH:(...) dependencies { (...) runtime "com.oracle.ojdbc7:12.1.0.2.0" (...) } (...)

7)

享受......

4 个答案:

答案 0 :(得分:2)

是的,同时也可以。但缺少细节。 我一到办公室,就会发布详细的说明。 实际上在grails网站上的某个地方有一个mySql示例,从中可以很清楚如何为oracle DB做同样的事情。

我刚创建了一个新应用程序,并将其与myne for oracle 11g进行了比较。 这是:

  1. ./ build.gradle,将以下行添加到&#34;依赖项&#34;部分:

    运行时&#34; com.oracle:ojdbc14:10.2.0.3.0&#34;

  2. ./ grails-app / conf / application.yml,将以下内容添加到&#34; hibernate&#34;部分:

  3. jdbc:
        use_get_generated_keys: true
    
    1. ./ grails-app / conf / application.yml,dataSource:section应该是这样的:
    2. dataSource:
          pooled: true
          jmxExport: true
          driverClassName: oracle.jdbc.OracleDriver
          username: YOURUSERNAME
          password: yoursecret
      
      1. ./ grails-app / conf / application.yml,环境:配置,所有三个环境应该是这样的:
      2. environments:
        development:
            dataSource:
                dbCreate: create
                url: jdbc:oracle:thin:@somehost.net:1521:YOURORAINSTANCE
        test:
            dataSource:
                dbCreate: update
                url: jdbc:oracle:thin:@somehost.net:1521:YOURORAINSTANCE
        production:
            dataSource:
                dbCreate: update
                url: jdbc:oracle:thin:@somehost.net:1521:YOURORAINSTANCE
        

        你所拥有的Hibernate方言非常古老,我认为你最好删除它,如果没有明确指出它,一切正常。

答案 1 :(得分:1)

您可以通过此maven命令获取JDBC驱动程序。

mvn install:install-file \       -Dfile = / lib / ojdbc7.jar \       -DgroupId = com.oracle \       -DartifactId = ojdbc7 \       -Dversion = 12.1.0.1 \       -Dpackaging = jar \       -DgeneratePom =真

答案 2 :(得分:0)

  1. http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html

  2. 下载ojdbc7.jar
  3. 在应用程序的主文件夹中创建一个&lt; myapp&gt; / lib文件夹(从Grails 3中删除了lib文件夹)

  4. 将ojdbc7.jar复制到lib文件夹

  5. 将此行添加到&lt; myapp&gt; /build.gradle文件

  6.   dependencies{
           (...)
           runtime fileTree(dir: 'lib', include: '*.jar')
           (...)
      }
    
    1. 在&lt; myapp&gt; /grails-app/conf/application.yml
    2. 中创建行
       hibernate:
            (...)
            jdbc:
               use_get_generated_keys: true
      
       dataSource:
          pooled: true
          jmxExport: true
          driverClassName: oracle.jdbc.OracleDriver
          username: DBUSERNAME
          password: dbpassword
      
       environments:
           development:
               dataSource:
                   dbCreate: create
                   url: jdbc:oracle:thin:@localhost.net:1521:dbname
           test:
               dataSource:
                   dbCreate: update
                   url: jdbc:oracle:thin:@localhost.net:1521:dbname
           production:
               dataSource:
                   dbCreate: update
                   url: jdbc:oracle:thin:@locaLhost.net:1521:dbname
      
            

答案 3 :(得分:0)

Hibernate从2.0.1开始(Grails 2.0.1)支持属性“方言”。如下所示。假设还有一个类似的属性仍然适用于较新版本的Hibernate。

文件... / grails-app / conf / DataSource.groovy

// Global data source settings
// Note that these global properties values are composited with
// the environment-specific properties under "environments"
dataSource {
  pooled = true
  driverClassName = "oracle.jdbc.OracleDriver"
  ...
  // Required for function with Oracle 12c and above.
  // Not required for Oracle 11.2 and below. For the present works with both.
  // Specifying Oracle 10 dialect is sufficient.
  // Oracle 12c specific dialect support is not available for Hibernate 2.0.1.
  // Works with either ojdbc7 or ojdbc8 jars.
  dialect = org.hibernate.dialect.Oracle10gDialect
}

应用“dialect”属性足以针对Oracle 11g,12c运行旧代码。它花了一些时间将代码迁移到更新的版本和依赖项。