Spring Cloud教程-配置JPA并初始化数据
配置JPA并初始化数据
在前一节中,我们已经硬编码了交换值的响应。它来自数据库。在本节中,我们将创建一个连接到内存数据库的连接。
让我们看看如何将微服务连接到H2数据库。按照以下步骤将微服务连接到JPA内存数据库。
步骤1: 打开currency-exchange-service的pom.xml并添加以下两个依赖项。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
添加依赖项后,现在我们需要定义实体。
步骤2: 打开ExchangeValue.java文件并执行以下操作:
- 在类级别添加@Entity注解。
- 使用@Table注解定义表名。
- 通过在每个字段上添加@Column注解来定义实体的Id,并指定列名。
ExchangeValue.java
package cn.javatiku.microservices.currencyexchangeservice;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="Exchange_Value")
public class ExchangeValue
{
@Id
@Column(name="id")
private Long id;
@Column(name="currency_from")
private String from;
@Column(name="currency_to")
private String to;
@Column(name="conversion_multiple")
private BigDecimal conversionMultiple;
@Column(name="port")
private int port;
//default conatructor
public ExchangeValue()
{
}
//generating constructor using fields
public ExchangeValue(Long id, String from, String to, BigDecimal conversionMultiple)
{
super();
this.id = id;
this.from = from;
this.to = to;
this.conversionMultiple = conversionMultiple;
}
//generating getters and setters
public int getPort()
{
return port;
}
public void setPort(int port)
{
this.port = port;
}
public Long getId()
{
return id;
}
public String getFrom()
{
return from;
}
public String getTo()
{
return to;
}
public BigDecimal getConversionMultiple()
{
return conversionMultiple;
}
}
我们已经创建了实体,现在我们需要将一些数据插入数据库。
步骤3: 创建一个data.sql文件以插入数据到数据库中。
右键单击src/main/resources文件夹 -> New -> File -> 提供名称data.sql -> 完成
步骤4: 在data.sql文件中插入数据。我们插入了以下数据:
data.sql
insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)
values(10001,'USD', 'INR' ,65,0);
insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)
values(10002,'EUR', 'INR' ,75,0);
insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)
values(10003,'AUD', 'INR' ,25,0);
步骤5: 打开application.properties文件并启用H2控制台,配置URL和数据源。默认的JDBC URL是testdb。我们可以指定自己的JDBC URL。
我们指定的JDBS URL是jdbc:h2:mem:javatiku
application.properties
spring.application.name=currency-exchange-service
server.port=8000
spring.jpa.show-sql=true
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:javatiku
步骤6: 重新启动应用程序。
步骤7: 打开浏览器并输入URI http://localhost:8000/currency-exchange/from/USD/to/INR
。它返回响应,如下所示:
我们还可以在数据库中看到在data.sql文件中插入的数据。要打开H2控制台,我们需要执行以下操作:
- 在浏览器中输入
http://localhost:8000/h2-console
。它会显示以下页面:
注意: JDBC URL必须与您在application.properties文件中指定的URL相同。不要在User Name和Password字段中输入任何内容。默认的用户名是sa。
现在点击Test Connection按钮;如果连接成功,它会显示测试成功的消息。
步骤8: 点击Connect按钮。它会在页面的左侧显示创建的表。
步骤9: 运行以下查询以查看数据。
SELECT * FROM EXCHANGE_VALUE;
它会显示我们在data.sql文件中插入的数据。
在本节中,我们创建了内存数据库并向其中插入了一些值。