当您启动 Spring Boot 时,如果没有定义其他数据源并且在类路径中找到 H2,它将自动支持 H2。一段时间以来,我一直在使用 H2 进行开发。它工作得很好。所有现代关系数据库都将支持 ANSI SQL。但每个人都会有自己的细微差别和扩展。我喜欢 H2 的一件事是它的 Oracle 兼容模式。它允许 H2 像 Oracle 数据库一样工作。它并不完美,但确实做得很好。
Spring 框架是用于构建企业级应用程序的最流行的 Java 框架。 Oracle 是企业中使用最多的数据库。因此,如果您开发 Spring 应用程序,迟早会有机会持久化到 Oracle 数据库。
甲骨文数据库驱动程序
由于法律限制,Oracle JDBC 驱动程序不在公共 Maven 存储库中。这真的很烦人。甲骨文,如果您正在阅读本文——真的吗?来吧,解决这个问题。请。
因此,如果您在一家公司工作,您很可能会在安装了 Oracle JDBC jar 的情况下安装 nexus。但如果您不是,则需要从 Oracle 下载 JDBC 驱动程序(在接受您可能不会阅读的条款和条件之后)。然后你可以手动将它安装到本地 Maven 存储库中。
您可以使用此 Maven 命令将 JAR 安装到您的 Maven 存储库中。您可能需要根据下载的 JDBC 驱动程序版本调整版本和名称。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
Oracle 的 Spring Boot 配置
Maven 依赖
您需要将 Oracle Driver 添加到您的 Maven(或 Gradle)依赖项中。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
甲骨文数据源
最简单的方法是在 Spring Boot 应用程序的包结构中创建一个配置 bean。这将为您的 Spring Boot 应用程序创建一个新的 Oracle 数据源。一旦你指定了数据源,Spring Boot 将不再自动为你创建 H2 数据源。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
春季启动配置
甲骨文资产
在此示例中,我将向您展示如何将 Oracle 连接属性外部化到属性文件中。
在我们的 Spring Boot application.properties 文件中,我们要设置以下属性。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
接下来,在我们的 Oracle 配置类中,我们要添加以下注释:
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
这告诉 Spring 在绑定属性时查找 Oracle 的属性前缀。现在,如果我们的配置类有一个名为“whatever”的属性,Spring 将尝试将“oracle.whatever”的属性值绑定到配置类中的属性。
现在,如果我们将以下属性添加到我们的配置类中,Spring 将在创建我们的 Oracle 数据源时使用它们。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
最终的 Oracle 配置类如下所示:
Oracle配置类
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
休眠配置
我们将要告诉 Hibernate 使用 Oracle 方言。我们通过将以下属性添加到 Spring Boot application.properties 文件来完成此操作。
必需的
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
选修的
如果您习惯使用 H2 数据库,Hibernate 会自动生成数据库表。如果您希望在 Oracle 中有相同的行为,则需要将 Hibernate 的 ddl-auto 属性设置为“create-drop”。 Spring Boot 文档 包含有关数据库初始化的其他信息。要在 Oracle 中自动创建表,请在 application.properties 文件中设置以下属性。
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar
亚马逊 RDS
在测试这篇文章的代码时,我使用 Amazon RDS 假脱机运行了一个 Oracle 实例。这使得创建 Oracle 数据库变得非常容易。如果您想自己测试一下,我已经在 GitHub 上 签入了代码。您可以查看它,并在 Amazon RDS 上设置您自己的 Oracle 实例。只需更新 application.properities 中的连接属性。我对有关使用 Spring Boot 构建 Web 应用程序的 教程系列 中的代码进行了分支。一切都会起作用——除了创建和保存。 Oracle 处理 ID 生成的方式略有不同,我没有为此更新 JPA 映射。