现在的位置: 首页 > 综合 > 正文

使用Spring通过JPA连接到Db2

2020年02月18日 综合 ⁄ 共 4194字 ⁄ 字号 评论关闭

  首先,确定您计划使用 IBM Cloud 开发者工具还是 Spring Initializr 创建项目,然后按照各自的说明进行操作。

  IBM Cloud 开发者工具

  如果您使用 IBM Cloud 开发者工具创建项目,那么使用 dev 插件创建新的 Spring 微服务。

  ibmcloud dev create

  1.选择 Backend Service / Web App。

  2.选择 Java – Spring。

  3.选择 Java Microservice with Spring (Microservice)。

  4.指定项目名称(例如 MyDb2JPAProject)。

  5.拒绝向应用程序添加服务 (n)。

  6.选择合适的工具链,如果不确定,选择 None("No Devops")。

  7.切换到应用程序目录。

  8.将 Spring JPA 启动器添加到 pom.xml 中的 dependencies 元素中:

  < dependency>

  < groupId>org.springframework.boot< /groupId>>

  < artifactId>spring-boot-starter-data-jpa< /artifactId>

  < /dependency>

  Spring Initializr

  如果您使用 Spring Initializr 创建项目,那么使用浏览器访问 https://start.spring.io。

  1.选择您的 Spring Boot 级别(目前默认版本为 2.0.4)。

  2.指定项目工件名称(例如 mydb2jpaproject)。

  3.添加 Web 依赖项。

  4.添加 JPA 依赖项。

  5.选择 Generate Project,然后下载应用程序包。

  6.解压程序包。

  7.切换到解压目录。

  将db2jcc4.jar 添加到项目中

  Maven 中不提供 Db2 JDBC Driver (JCC),所以您必须直接从 IBM 下载,并将其添加到本地 maven 仓库。

  从 Db2 JDBC 驱动程序版本和下载中选择并下载适合您的驱动程序包。

  解压此程序包,并将 db2jcc4.jar 文件保存到项目根目录下的一个新的 lib 目录中。

  在此 lib 目录中,将Jar 作为 Maven 包添加,并根据您下载的程序包相应地更改版本:

  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 元素,并相应地更改版本以实现匹配:

  < dependency>

  < groupId>com.ibm.db2.jcc< /groupId>

  < artifactId>db2jcc4< /artifactId>

  < version>4.24.92< /version>

  < /dependency>

  创建示例表

  对于本快速指南,我们只使用一个数据库和一个表。

  使用 Db2 命令提示符连接到 Db2 实例,并发出以下 SQL 语句创建 things 表并填充一些数据:

  create table things (id int, name varchar(255))

  insert into things (id,name) values (1,'fish'),(2,'wibble'),(3,'stiletto')

  如果您为此表使用不同的名称,就需要记住这个名称,以便稍后创建 JPA 类时使用。

  为 Db2 实例配置 Spring 数据

  Spring 需要被告知如何与数据库进行通信,与其他 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 实例的位置和凭证相匹配。

  创建 JPA 类

  在项目中,找到 Spring Boot 主应用程序类。

  对于通过 Spring Initializr 创建的项目,主应用程序类以创建项目时提供的工件名称来命名。例如,如果通过 com.example 包命名工件 demo,您将在 src/main/java/com/example/DemoApplication.java 目录下找到主类。

  对于通过 IBM Cloud 开发者工具创建的项目,主应用程序类始终位于 src/main/java/application/SBApplication.java 目录下。

  在与应用程序类相同的目录下,为 JPA 类 jpa 创建一个目录。

  在 jpa 目录下,创建表示表行的类。该类应该与您之前创建的表使用相同的名称。

  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);

  }

  }

  在与该类相同的目录下,创建用于访问数据的 Repository 类。接口用您刚才创建的类的类型。

  import java.util.List;

  import org.springframework.data.repository.CrudRepository;

  public interface Repository extends CrudRepository

  {

  List findByName(String name);

  Iterable findAll();

  }

  将 JPA 类的简单调用添加到 RestController

  对于通过 Spring Initializr 创建的项目,您必须创建自己的 RestController 类。在 jpa 目录旁创建一个控制器目录,然后在该目录下创建 RestController 类。

  对于通过 IBM Cloud 开发者工具创建的项目,在 src/main/java/application/rest/v1/Example.java 中已为您提供 RestController 示例。

  RestController 为您的应用程序提供 REST 端点。使用 @Autowired 将仓库注入到 RestController 中,然后添加一个可以返回表中数据的简单端点:

  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 example() {

  List list = new ArrayList<>();

  list.add("Table data...");

  for(Things things: repo.findAll()){

  list.add(things.toString());

  }

  return new ResponseEntity(list.toString(), HttpStatus.OK);

  }

  }

  您可能需要为之前创建的 Things 和 Repository 类添加导入功能。

  运行该示例

  您可以像运行任何其他 Spring Boot 应用程序一样运行该示例。

  mvn spring-boot:run

  然后,您可以访问此端点,查看它查询数据库和检索信息的情况。

  $ curl http://localhost:8080/test

  [Table data..., Things[id=1, name='fish'], Things[id=2, name='wibble'], Things[id=3, name='stiletto']]

  总结

  通过使用 Spring 自动配置和 Spring Boot 属性,Spring Boot 能够使我们以 Spring 原生方式轻松地配置和使用 Db2 实例。

抱歉!评论已关闭.