SpringBoot:使用jpa实现对Apache Geode的基本操作

===当前版本:jdk1.8apache-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的错误


版权声明:本文为weixin_45492007原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。