SpringBoot+SpringDataJPA+Oracle教程示例
當你從Spring Boot開始時,如果沒有定義其他資料來源並且在類路徑上找到H2,它將自動支援H2。我一直在使用H2進行開發。它工作得很好。所有現代關係資料庫都將支援ANSI SQL。但每個人都會有自己的細微差別和擴充套件。我喜歡H2的一件事是它的Oracle相容模式。它允許H2充當Oracle資料庫。它並不完美,但確實做得很好。
Spring Framework是用於構建企業級應用程式的最流行的Java框架。Oracle是企業中最常用的資料庫。所以,如果開發Spring應用程式你早晚會使用到Oracle資料庫。
Oracle Database Driver
由於法律限制,Oracle JDBC驅動程式不在公共Maven儲存庫中。那麼我們只能使用Maven將驅動jar包安裝到本地maven庫中:
1.ofollow,noindex" target="_blank">從oracle下載jdbc驅動
2. 使用此Maven命令將JAR安裝到Maven儲存庫中。您可能需要根據下載的JDBC驅動程式版本調整版本和名稱。
mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
現在就可以像正常使用jar包在你的pom.xml中配置oracle了:
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> <scope>runtime</scope> </dependency>
注意這裡groudId和artifactId需要與前面第二步mvn install中的名稱一致。
開始SpringBoot應用
開始SpringBoot有很多方式,通過Spring網站的引導,或者Idea的Spring初始化都可以,我們選擇元件有三個:Web JPA和H2,開發時使用H2,生產環境使用Oracle,最終生成的pom.xml如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> <scope>runtime</scope> </dependency>
Spring Boot提供不同環境的配置,我們有開發和生產兩個環境,因此分別建立兩個配置檔案:
application-dev.properties:開發環境
application-prod.properties:生產環境
預設配置application.properties中內容是:
spring.application.name=product spring.profiles.active=dev
dev代表application-dev.properties起作用,dev我們使用的H2資料庫,無需配置,因此可以是空白,如果我們需要切換到生產環境,將dev改為prod:
spring.application.name=product spring.profiles.active=prod
這時,Springboot將載入application-prod.properties配置:
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/pengpdborcl spring.datasource.username=scottpeng spring.datasource.password=scottpeng spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update
上述是Oracle Jdbc的配置,Hibernate 5以後可以使用g.hibernate.dialect.Oracle12cDialect。
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
這兩行將根據模型程式碼自動生成資料庫。
之後你可以使用JP配置實體,比如:
@Entity public class Product { @javax.persistence.Id private String Id; private String name;
Oracle資料庫將生成一個PRODUCT的資料表。
倉儲操作程式碼只要繼承一個介面,簡單CRUD操作就不需要編寫SQL,這樣非常適合DDD聚合根的程式設計,CQRS實現讀寫分離,查詢繼續使用SQL或儲存過程,模型寫入採取JPA:
public interface ProductRepo extends JpaRepository<Product, String> { }
Github完整原始碼