===当前版本:jdk1.8,apache-geode-1.15.0=
当前内容主要为记录SpringBoot中使用jpa方式访问当前的Apache Geode,实现基本的操作demo
关于Geode的使用参考官方文档:添加链接描述
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.4.13version>
parent>
<groupId>springboot-geodegroupId>
<artifactId>springboot-geodeartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>springboot-geodename>
<url>http://maven.apache.orgurl>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<spring-geode.version>1.4.13spring-geode.version>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.geodegroupId>
<artifactId>spring-geode-bomartifactId>
<version>${spring-geode.version}version>
<scope>importscope>
<type>pomtype>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.geodegroupId>
<artifactId>spring-geode-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.geodegroupId>
<artifactId>spring-geode-starter-sessionartifactId>
dependency>
<dependency>
<groupId>org.springframework.geodegroupId>
<artifactId>spring-geode-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
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";
}
}
使用postman进行数据添加操作



这里可以发现实际的数据中增加了,而且可以查询出来

执行清空操作
remove --all --region=People


测试成功!
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的错误