實例講解使用Spring通過JPA連接到Db2
前提條件
- Maven
- 一個擁有訪問憑證的 Db2 實例:
- IBM Cloud
- 本地
- Java JDK
- IBM Cloud 開發(fā)者工具(可選)
創(chuàng)建項目
首先,確定您計劃使用 IBM Cloud 開發(fā)者工具還是 Spring Initializr 創(chuàng)建項目,然后按照各自的說明進(jìn)行操作。
IBM Cloud 開發(fā)者工具
如果您使用 IBM Cloud 開發(fā)者工具創(chuàng)建項目,那么使用 dev 插件創(chuàng)建新的 Spring 微服務(wù)。
ibmcloud dev create
1.選擇 Backend Service / Web App。
2.選擇 Java – Spring。
3.選擇 Java Microservice with Spring (Microservice)。
4.指定項目名稱(例如 MyDb2JPAProject)。
5.拒絕向應(yīng)用程序添加服務(wù) (n)。
6.選擇合適的工具鏈,如果不確定,選擇 None("No Devops")。
7.切換到應(yīng)用程序目錄。
8.將 Spring JPA 啟動器添加到 pom.xml 中的 dependencies 元素中:
<dependency> <groupId>org.springframework.boot</groupId>> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
Spring Initializr
如果您使用 Spring Initializr 創(chuàng)建項目,那么使用瀏覽器訪問 https://start.spring.io。
1.選擇您的 Spring Boot 級別(目前默認(rèn)版本為 2.0.4)。
2.指定項目工件名稱(例如 mydb2jpaproject)。
3.添加 Web 依賴項。
4.添加 JPA 依賴項。
5.選擇 Generate Project,然后下載應(yīng)用程序包。
6.解壓程序包。
7.切換到解壓目錄。
將db2jcc4.jar 添加到項目中
Maven 中不提供 Db2 JDBC Driver (JCC),所以您必須直接從 IBM 下載,并將其添加到本地 maven 倉庫。
從 Db2 JDBC 驅(qū)動程序版本和下載中選擇并下載適合您的驅(qū)動程序包。
解壓此程序包,并將 db2jcc4.jar 文件保存到項目根目錄下的一個新的 lib 目錄中。
在此 lib 目錄中,將Jar 作為 Maven 包添加,并根據(jù)您下載的程序包相應(yīng)地更改版本:
mvn install:install-file -DlocalRepositoryPath=lib -DcreateChecksum=true -Dpackaging=jar -Dfile=./lib/db2jcc4.jar -DgroupId=com.ibm.db2.jcc -DartifactId=db2jcc4 -Dversion=4.24.92
將 lib 目錄作為 Maven 倉庫添加到 pom.xml:
<repositories> <repository> <id>repo</id> <url>file://${project.basedir}/lib</url> </repository> </repositories>
將依賴添加到 pom.xml 中的 dependency 元素,并相應(yīng)地更改版本以實現(xiàn)匹配:
<dependency> <groupId>com.ibm.db2.jcc</groupId> <artifactId>db2jcc4</artifactId> <version>4.24.92</version> </dependency>
創(chuàng)建示例表
對于本快速指南,我們只使用一個數(shù)據(jù)庫和一個表。
使用 Db2 命令提示符連接到 Db2 實例,并發(fā)出以下 SQL 語句創(chuàng)建 things 表并填充一些數(shù)據(jù):
create table things (id int, name varchar(255)) insert into things (id,name) values (1,'fish'),(2,'wibble'),(3,'stiletto')
如果您為此表使用不同的名稱,就需要記住這個名稱,以便稍后創(chuàng)建 JPA 類時使用。
為 Db2 實例配置 Spring 數(shù)據(jù)
Spring 需要被告知如何與數(shù)據(jù)庫進(jìn)行通信,與其他 Spring 配置一樣,這些信息在 application.properties(或 application.yaml)文件中(位于 src/main/resources/application.properties)。
將以下屬性添加到 application.properties 文件:
spring.datasource.url=jdbc:db2://mydb2host:50000/mydb2databasename spring.datasource.username=mydb2username spring.datasource.password=mydb2password
記得更改這些值,以便與您的 Db2 實例的位置和憑證相匹配。
創(chuàng)建 JPA 類
在項目中,找到 Spring Boot 主應(yīng)用程序類。
對于通過 Spring Initializr 創(chuàng)建的項目,主應(yīng)用程序類以創(chuàng)建項目時提供的工件名稱來命名。例如,如果通過 com.example 包命名工件 demo,您將在 src/main/java/com/example/DemoApplication.java 目錄下找到主類。
對于通過 IBM Cloud 開發(fā)者工具創(chuàng)建的項目,主應(yīng)用程序類始終位于 src/main/java/application/SBApplication.java 目錄下。
在與應(yīng)用程序類相同的目錄下,為 JPA 類 jpa 創(chuàng)建一個目錄。
在 jpa 目錄下,創(chuàng)建表示表行的類。該類應(yīng)該與您之前創(chuàng)建的表使用相同的名稱。
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Things { @Id private Long id; private String name; public Things(){ } @Override public String toString() { return String.format("Things[id=%d, name='%s']", id, name); } }
在與該類相同的目錄下,創(chuàng)建用于訪問數(shù)據(jù)的 Repository 類。接口用您剛才創(chuàng)建的類的類型。
import java.util.List; import org.springframework.data.repository.CrudRepository; public interface Repository extends CrudRepository<Things, Long> { List<Things> findByName(String name); Iterable<Things> findAll(); }
將 JPA 類的簡單調(diào)用添加到 RestController
對于通過 Spring Initializr 創(chuàng)建的項目,您必須創(chuàng)建自己的 RestController 類。在 jpa 目錄旁創(chuàng)建一個控制器目錄,然后在該目錄下創(chuàng)建 RestController 類。
對于通過 IBM Cloud 開發(fā)者工具創(chuàng)建的項目,在 src/main/java/application/rest/v1/Example.java 中已為您提供 RestController 示例。
RestController 為您的應(yīng)用程序提供 REST 端點。使用 @Autowired 將倉庫注入到 RestController 中,然后添加一個可以返回表中數(shù)據(jù)的簡單端點:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.List; @RestController public class Example { @Autowired Repository repo; @RequestMapping("test") public @ResponseBody ResponseEntity<String> example() { List<String> list = new ArrayList<>(); list.add("Table data..."); for(Things things: repo.findAll()){ list.add(things.toString()); } return new ResponseEntity<String>(list.toString(), HttpStatus.OK); } }
您可能需要為之前創(chuàng)建的 Things 和 Repository 類添加導(dǎo)入功能。
運行該示例
您可以像運行任何其他 Spring Boot 應(yīng)用程序一樣運行該示例。
mvn spring-boot:run
然后,您可以訪問此端點,查看它查詢數(shù)據(jù)庫和檢索信息的情況。
$ curl http://localhost:8080/test [Table data..., Things[id=1, name='fish'], Things[id=2, name='wibble'], Things[id=3, name='stiletto']]
總結(jié)
通過使用 Spring 自動配置和 Spring Boot 屬性,Spring Boot 能夠使我們以 Spring 原生方式輕松地配置和使用 Db2 實例。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springBoot啟動時讓方法自動執(zhí)行的幾種實現(xiàn)方式
這篇文章主要介紹了springBoot啟動時讓方法自動執(zhí)行的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Java避免死鎖_動力節(jié)點Java學(xué)院整理
在有些情況下死鎖是可以避免的。本文將展示三種用于避免死鎖的技術(shù)。對java避免死鎖的相關(guān)知識感興趣的朋友一起通過本文學(xué)習(xí)吧2017-06-06spring boot加載第三方j(luò)ar包的配置文件的方法
本篇文章主要介紹了spring boot加載第三方j(luò)ar包的配置文件的方法,詳細(xì)的介紹了spring boot jar包配置文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10JDK1.8中的ConcurrentHashMap使用及場景分析
這篇文章主要介紹了JDK1.8中的ConcurrentHashMap使用及場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Java實戰(zhàn)角色權(quán)限后臺腳手架系統(tǒng)的實現(xiàn)流程
只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+myBaits-Plus+Vue+Element-UI+Mysql實現(xiàn)一個角色權(quán)限后臺腳手架系統(tǒng),大家可以在過程中查缺補漏,提升水平2022-01-01Spring Cloud EureKa Ribbon 服務(wù)注冊發(fā)現(xiàn)與調(diào)用
這篇文章主要介紹了Spring Cloud EureKa Ribbon 服務(wù)注冊發(fā)現(xiàn)與調(diào)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02Java連接Oracle數(shù)據(jù)庫完整步驟記錄
數(shù)據(jù)庫的操作是當(dāng)前系統(tǒng)開發(fā)必不可少的開發(fā)部分之一,下面這篇文章主要給大家介紹了關(guān)于Java連接Oracle數(shù)據(jù)庫的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Java AQS中ReentrantReadWriteLock讀寫鎖的使用
ReentrantReadWriteLock稱為讀寫鎖,它提供一個讀鎖,支持多個線程共享同一把鎖。這篇文章主要講解一下ReentrantReadWriteLock的使用和應(yīng)用場景,感興趣的可以了解一下2023-02-02