SpringBoot:使用jpa实现对Apache Geode的基本操作
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot:使用jpa实现对Apache Geode的基本操作相关的知识,希望对你有一定的参考价值。
===当前版本:jdk1.8
,apache-geode-1.15.0
=
1. 声明
当前内容主要为记录SpringBoot中使用jpa方式访问当前的Apache Geode,实现基本的操作demo
关于Geode的使用参考官方文档:添加链接描述
2. pom依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.13</version>
</parent>
<groupId>springboot-geode</groupId>
<artifactId>springboot-geode</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-geode</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-geode.version>1.4.13</spring-geode.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.geode</groupId>
<artifactId>spring-geode-bom</artifactId>
<version>$spring-geode.version</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.geode</groupId>
<artifactId>spring-geode-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.geode</groupId>
<artifactId>spring-geode-starter-session</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.geode</groupId>
<artifactId>spring-geode-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3. 基本的demo
1. 由于使用连接的是本地的地址,需要开启pdx
configure pdx --disk-store=DEFAULT
2. 重新按照文档中启动server和一个locator,并指定特定的端口(方便整合时自动连接)
start locator --name=locator1 --port=10334
start server --name=server1 --server-port=40404
3. 开始创建一个Region(People
)
create region --name=People --type=REPLICATE_PERSISTENT
4. 开始编写代码:入口类
@SpringBootApplication
@EnableEntityDefinedRegions(basePackageClasses = People.class, clientRegionShortcut = ClientRegionShortcut.PROXY ) // 只是当代理转发的操作
@EnablePdx
@EnableCachingDefinedRegions
@EnableGemfireCaching
public class Application
public static void main(String[] args)
ConfigurableApplicationContext run = SpringApplication.run(Application.class, args);
ConfigurableEnvironment environment = run.getEnvironment();
5. 实体层
@Region(value = "People")
public class People implements Serializable
@Id
private String name;
private int age;
// 省略get\\set方法
6. Repository层
@Repository
public interface PersonRepository extends CrudRepository<People, String>
7. Controller层
@RestController
public class TestController
@Autowired
PersonRepository personRepository;
@RequestMapping(value = "/findById", method = RequestMethod.GET)
public Object findById(String id)
return personRepository.findById(id);
@RequestMapping(value = "/findAll", method = RequestMethod.GET)
public Object findAll()
return personRepository.findAll();
@RequestMapping(value = "/insert", method = RequestMethod.POST)
public Object insert(People bean)
personRepository.save(bean);
return "add OK";
4. 测试
使用postman进行数据添加操作
这里可以发现实际的数据中增加了,而且可以查询出来
执行清空操作
remove --all --region=People
测试成功!
5. 总结
1. 注意当前使用的注解和使用的模式clientRegionShortcut = ClientRegionShortcut.PROXY和LOCAL的方式不同,LOCAL不会连接到server上面并发送写入数据
2. 如果出现The PDX metadata must be persistent in a member that has persistent data. See CacheFactory.setPdxPersistent.
错误你需要开启Pdx(先配置configure pdx --disk-store=DEFAULT并重启所有服务
)
3. 一定要先创建Region然后再使用jpa,否则会出现没有/XXX的错误
以上是关于SpringBoot:使用jpa实现对Apache Geode的基本操作的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot:使用jpa实现对Apache Geode的基本操作