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

Posted 你是小KS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的错误

以上是关于SpringBoot:使用jpa实现对Apache Geode的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

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

用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

SpringBoot环境下QueryDSL-JPA的使用

SpringBoot整合JPA

SpringBoot------JPA连接数据库

SpringBoot集成JPA