Java Pivotal Gemfire 8.1将未保存数据的数据放入Gemfire
我已经创建了没有Spring数据的示例GemFire示例 问题:我的示例运行良好,已连接到Gem fire server,并以java代码返回响应,但在gfsh中运行相同的查询时,未找到任何数据 gfsh>query--query='select*from/regionA' 结果:正确 startCount:0 完数:20 行数:0 下一步\u步骤\u名称:结束 然后,我使用单独的类添加数据,并使用单独的类获取数据,以便在java代码中返回null 它似乎没有将数据存储到gemfire中,任何日志中都没有错误Java Pivotal Gemfire 8.1将未保存数据的数据放入Gemfire,java,gemfire,Java,Gemfire,我已经创建了没有Spring数据的示例GemFire示例 问题:我的示例运行良好,已连接到Gem fire server,并以java代码返回响应,但在gfsh中运行相同的查询时,未找到任何数据 gfsh>query--query='select*from/regionA' 结果:正确 startCount:0 完数:20 行数:0 下一步\u步骤\u名称:结束 然后,我使用单独的类添加数据,并使用单独的类获取数据,以便在java代码中返回null 它似乎没有将数据存储到gemfire中,任何日
package com.vaquar.example1;
import java.util.List;
import org.json.simple.JSONObject;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.CacheFactory;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.cache.client.ClientCacheFactory;
import com.gemstone.gemfire.cache.query.SelectResults;
import com.gemstone.gemfire.pdx.JSONFormatter;
import com.gemstone.gemfire.pdx.PdxInstance;
public final class JSONGemFireClient {
public static final String REGION_NAME = "myPOregion";//"myPOregion";//"regionA";
public ClientCache cache = null;
public JSONGemFireClient() {
//cache = new ClientCacheFactory().set("name", "JSONClient").set("cache-xml-file", "GemFire5.xml").create();
cache = new ClientCacheFactory().set("name", "JSONClient").set("cache-xml-file", "GemFire5.xml").create();
//
/*Cache c1 = new CacheFactory().create();
Region r = c1.createRegionFactory("REPLICATE").create("customers");
*/
System.out.println("cache------------------------->"+cache);
System.out.println("cache------------------------->"+cache.getRegion(REGION_NAME).toString());
}
public void run() throws Exception {
JSONObject obj = null;
System.out.println("Connecting to the distributed system and creating the cache.");
// Get the exampleRegion
Region<String, PdxInstance> jsonregion = cache.getRegion(REGION_NAME);
//
System.out.println("jsonregion----------jsonregion.getFullPath()--------------->"+cache.getRegionAttributes(REGION_NAME)+jsonregion.getFullPath());
//
System.out.println("Example region \"" + jsonregion.getFullPath() + "\" created in cache.");
//
//
// add 5 entries with age = 30
for (int i = 1; i <= 5; i++) {
obj = new JSONObject();
obj.put("name", String.format("Person%s", i));
obj.put("age", 30);
System.out.println("------------------"+obj.toJSONString());
String json=obj.toJSONString();
System.out.println("************************************"+JSONFormatter.fromJSON(json));
jsonregion.put(String.valueOf(i), JSONFormatter.fromJSON(json));
}
//
//
// add 5 entries with age = 20
for (int i = 6; i <= 10; i++) {
obj = new JSONObject();
obj.put("name", String.format("Person%s", i));
obj.put("age", 20);
jsonregion.put(String.valueOf(i), JSONFormatter.fromJSON(obj.toJSONString()));
}
//
//
// Query region
SelectResults<PdxInstance> sr = jsonregion.query("age = 30");
System.out.println("Number of entries where age = 30 is -> " + sr.size());
//
List<PdxInstance> entries = sr.asList();
//
for (PdxInstance val : entries) {
System.out.println("\n** JSON data ** ");
System.out.println("Name = " + val.getField("name"));
System.out.println("Full JSON data -> \n" + JSONFormatter.toJSON(val));
}
cache.close();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JSONGemFireClient test = new JSONGemFireClient();
try {
test.run();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
从gfsh查询时,是否可以尝试向查询添加投影属性?差不多
gfsh>query --query='select name from /regionA'
发现问题和解决办法 问题:在xml文件中需要refid=“PROXY”
package com.vaquar.example2;
import java.util.List;
import org.json.simple.JSONObject;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.cache.client.ClientCacheFactory;
import com.gemstone.gemfire.cache.query.SelectResults;
import com.gemstone.gemfire.pdx.JSONFormatter;
import com.gemstone.gemfire.pdx.PdxInstance;
public final class JSONGemFireClient {
public static final String REGION_NAME = "regionB";
/**
* @param args
*/
public static void main(final String[] args) {
//
final JSONGemFireClient test = new JSONGemFireClient();
try {
test.run();
} catch (final Exception e) {
//
e.printStackTrace();
}
}
public ClientCache cache = null;
public JSONGemFireClient() {
//
cache = new ClientCacheFactory().set("name", "JSONClient").set("cache-xml-file", "GemFire6.xml").create();
//
}
public void run() throws Exception {
JSONObject obj = null;
System.out.println("Connecting to the distributed system and creating the cache.");
// Get the exampleRegion
final Region<String, PdxInstance> jsonregion = cache.getRegion(REGION_NAME);
//
System.out.println("jsonregion----------jsonregion.getFullPath()--------------->" + cache.getRegionAttributes(REGION_NAME)
+ jsonregion.getFullPath());
//
System.out.println("Example region \"" + jsonregion.getFullPath() + "\" created in cache.");
//
//
// add 5 entries with age = 30
for (int i = 1; i <= 5; i++) {
obj = new JSONObject();
obj.put("name", String.format("Person%s", i));
obj.put("age", 30);
System.out.println("------------------" + obj.toJSONString());
final String json = obj.toJSONString();
System.out.println("************************************" + JSONFormatter.fromJSON(json));
jsonregion.put(String.valueOf(i), JSONFormatter.fromJSON(json));
}
//
//
// add 5 entries with age = 20
for (int i = 6; i <= 10; i++) {
obj = new JSONObject();
obj.put("name", String.format("Person%s", i));
obj.put("age", 20);
jsonregion.put(String.valueOf(i), JSONFormatter.fromJSON(obj.toJSONString()));
}
//
//
// Query region
final SelectResults<PdxInstance> sr = jsonregion.query("age = 30");
System.out.println("Number of entries where age = 30 is -> " + sr.size());
//
final List<PdxInstance> entries = sr.asList();
//
for (final PdxInstance val : entries) {
System.out.println("\n** JSON data ** ");
System.out.println("Name = " + val.getField("name"));
System.out.println("Full JSON data -> \n" + JSONFormatter.toJSON(val));
}
cache.close();
}
}
第二个修复示例:
package com.vaquar.example2;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.cache.client.ClientCacheFactory;
public final class GemFireSample3 {
public static void main(final String[] args) {
final ClientCache cache = new ClientCacheFactory().set("cache-xml-file", "HelloWorld1.xml").create();
final Region<String, String> sampleRegion = cache.getRegion("pingTestRegion");
sampleRegion.put("samplekey", "Sample Value Test");
//
final String sampleValue = sampleRegion.get("samplekey");
System.out.println("sampleValue"+sampleValue);
// sampleRegion.clear();
cache.close();
}
}
我已经尝试了DTO的例子
package com.viquar.gem.fire.example;
import static java.lang.System.out;
import java.util.Calendar;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
import com.gemstone.gemfire.cache.client.ClientCacheFactory;
public class GemFireDTOExample {
public static void main(final String[] args) {
// final ClientCache cache = new ClientCacheFactory().create();
final ClientCache cache = new ClientCacheFactory().set("cache-xml-file", "gemfiredtoexample.xml").create();
System.out.println("cache-------------------->" + cache);
final Region<Employee, Address> sampleRegion = cache.getRegion("dtoTestRegion");
final Employee emp1 = getEmployee(1L, "shahbaz", 16, 1990);
final Address add1 = getAddress("B-12", "M.G.ROAD", "PUNE");
sampleRegion.put(emp1, add1);
//
final Address sampleValue = sampleRegion.get(emp1);
out.println("------------------------------------------------------" + sampleValue);
// sampleRegion.clear();
cache.close();
}
private static Address getAddress(final String blockName, final String street, final String city) {
final Address add = new Address();
add.setBlockName(blockName);
add.setCity(city);
add.setStreet(street);
return add;
}
private static Employee getEmployee(final Long empId, final String name, final int date, final int year) {
final Employee emp = new Employee();
emp.setEmpId(empId);
emp.setName(name);
final Calendar dateOfBirth = Calendar.getInstance();
dateOfBirth.set(year, Calendar.DECEMBER, date);
emp.setDateOfBirth(dateOfBirth.getTime());
return emp;
}
}
现在运行以下命令
gfsh>deploy --jar=C:\devprogs\Pivotal_GemFire_800_b48398_Windows\bin\locator1\cluster_config\cluster\employee_dto.jar
Could not process command due to GemFire error. 'C:\devprogs\Pivotal_GemFire_800_b48398_Windows\bin\locator1\cluster_config\cluster\employee_dto.jar' not found.
gfsh>deploy --jar=C:\devprogs\Pivotal_GemFire_800_b48398_Windows\bin\locator1\cluster_config\cluster\employee_dto.jar
Member | Deployed JAR | Deployed JAR Location
------- | ---------------- | -----------------------------------------------------------------------------------
server1 | employee_dto.jar | C:\devprogs\Pivotal_GemFire_800_b48398_Windows\bin\server1\vf.gf#employee_dto.jar#2
server2 | employee_dto.jar | C:\devprogs\Pivotal_GemFire_800_b48398_Windows\bin\server2\vf.gf#employee_dto.jar#2
gfsh>create region --name=dtoTestRegion --type=REPLICATE --key-constraint=com.viquar.gem.fire.example.Employee --value-constraint=com.viquar.gem.fire.example.Address
Member | Status
------- | --------------------------------------------
server1 | Region "/dtoTestRegion" created on "server1"
server2 | Region "/dtoTestRegion" created on "server2"
现在,在gfsh中执行以下查询之后运行您的程序
gfsh>query --query='select * from /dtoTestRegion'
Result : true
startCount : 0
endCount : 20
Rows : 1
blockName | city | street
--------- | ---- | --------
B-12 | PUNE | M.G.ROAD
NEXT_STEP_NAME : END
gfsh>
您可以使用Spring数据。
分享的例子如下-
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>WebserviceSpringDataGemFire</groupId>
<artifactId>WebserviceSpringDataGemFire</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>WebserviceSpringDataGemFire</name>
<properties>
<spring.version>4.1.7.RELEASE</spring.version>
<jackson.version>1.9.10</jackson.version>
<jdk.version>1.7</jdk.version>
</properties>
<dependencies>
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.5.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons-core</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-gemfire</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.gemstone.gemfire</groupId>
<artifactId>gemfire</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<!-- Required for Log4J XML configuration files -->
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>commons-chain</groupId>
<artifactId>commons-chain</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2</version>
</dependency>
<!-- Jackson JSON Mapper -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WebserviceSpringDataGemFire</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="spring.gemfire.repository.deptemp"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:gfe="http://www.springframework.org/schema/gemfire"
xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/gemfire
http://www.springframework.org/schema/gemfire/spring-gemfire-1.2.xsd
http://www.springframework.org/schema/data/gemfire
http://www.springframework.org/schema/data/gemfire/spring-data-gemfire-1.2.xsd">
<context:component-scan base-package="spring.gemfire.repository.deptemp"/>
<gfe:client-cache id="client-cache" cache-xml-location="classpath:gemfire-client.xml" pool-name="gfPool"/>
<gfe:pool id="gfPool" max-connections="10">
<gfe:locator host="localhost" port="10334"/>
</gfe:pool>
<gfe:lookup-region id="departments" name="departments" cache-ref="client-cache"/>
<gfe:lookup-region id="employees" name="employees" cache-ref="client-cache"/>
<gfe-data:repositories base-package="spring.gemfire.repository.deptemp.repos" />
</beans>
<!DOCTYPE client-cache PUBLIC
"-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
"http://www.gemstone.com/dtd/cache6_5.dtd">
<client-cache>
<!-- No cache storage in the client region because of the PROXY client region shortcut setting. -->
<!-- <pool name="cacheServerPool">
<locator host="GCOTDVMR770036.nam.nsroot.net" port="10334" />
</pool> -->
<region name="departments" refid="PROXY">
<!-- <region-attributes refid="PROXY" pool-name="gfPool" data-policy="replicate"/> -->
<region-attributes refid="PROXY" data-policy="replicate"/>
</region>
<region name="employees" refid="PROXY">
<!-- <region-attributes refid="PROXY" pool-name="gfPool" data-policy="replicate"/> -->
<region-attributes refid="PROXY" data-policy="replicate"/>
</region>
</client-cache>
Employee.java
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("departments")
public class Department implements Declarable, Serializable {
private static final long serialVersionUID = -9097335119586059309L;
@Id
private int deptno;
private String name;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Department other = (Department) obj;
if (deptno != other.deptno) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
deptno = Integer.parseInt(props.getProperty("deptno"));
name = props.getProperty("name");
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Department [deptno=" + deptno + ", name=" + name + "]";
}
}
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("employees")
public class Employee implements Declarable, Serializable {
private static final long serialVersionUID = -8229531542107983344L;
@Id
private int empno;
private String name;
private String job;
private int deptno;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Employee other = (Employee) obj;
if (deptno != other.deptno) { return false; }
if (empno != other.empno) { return false; }
if (job == null) {
if (other.job != null) { return false; }
} else if (!job.equals(other.job)) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public int getEmpno() {
return empno;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + empno;
result = prime * result + ((job == null) ? 0 : job.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
empno = Integer.parseInt(props.getProperty("empno"));
name = props.getProperty("name");
job = props.getProperty("job");
deptno = Integer.parseInt(props.getProperty("deptno"));
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setEmpno(final int empno) {
this.empno = empno;
}
public void setJob(final String job) {
this.job = job;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [empno=" + empno + ", name=" + name + ", job=" + job + ", deptno=" + deptno + "]";
}
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Department;
//@Repository(DeptRepository.BEAN_ID)
public interface DeptRepository extends CrudRepository<Department, Integer> {
String BEAN_ID="deptRepository";
Department findByName(String name);
@Query("SELECT * FROM /departments")
Collection<Department> myFindAll();
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Employee;
//@Repository(DeptRepository.BEAN_ID)
public interface EmpRepository extends CrudRepository<Employee, Integer> {
String BEAN_ID="empRepository";
@Query("SELECT * FROM /employees where deptno = $1")
Collection<Employee> empsInDeptno(int deptno);
@Query("SELECT * FROM /employees")
Collection<Employee> myFindAll();
}
package spring.gemfire.repository.deptemp.util;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class SpringFactoryConfig {
private static String DEFAULT_CONFIG_FILE = "gemfirebean1.xml";
private static SpringFactoryConfig INSTANCE;
public static final BeanFactory getDefaultSpringBeanFactory() {
if (INSTANCE == null) {
INSTANCE = new SpringFactoryConfig(DEFAULT_CONFIG_FILE);
}
return INSTANCE.getBeanFactory();
}
public static SpringFactoryConfig getSpringFactoryConfig(final String configFile) {
return new SpringFactoryConfig(configFile);
}
private final ApplicationContext springAppContext;
private SpringFactoryConfig(final String configFile) {
springAppContext = new ClassPathXmlApplicationContext("classpath:" + configFile);
if (springAppContext == null) { throw new IllegalStateException("Cannot get an instance of the Spring bean factory !"); }
}
public final <T> T getBean(final String name, final Class<T> beanType) {
if (springAppContext.isTypeMatch(name, beanType)) {
return beanType.cast(springAppContext.getBean(name));
} else {
throw new IllegalArgumentException("Bean " + name + " is not of appropriate type " + beanType);
}
}
public final BeanFactory getBeanFactory() {
return springAppContext;
}
}
package spring.gemfire.repository.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
public class Test {
public static void main(final String[] args) {
// TODO Auto-generated method stub
final Test t = new Test();
// t.deleteData();
// t.saveData();
t.getData();
System.out.println("all done..");
}
private ConfigurableApplicationContext ctx = null;
public Test() {
ctx = new ClassPathXmlApplicationContext("mvc-dispatcher-servlet.xml");
}
public void deleteData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// deptRepos.deleteAll();
final Collection<Department> deps = deptRepos.myFindAll();
deptRepos.delete(deps);
for (final Department d : deps) {
System.out.println(d.toString());
// deptRepos.delete(d);
}
System.out.println("** dept repository deleted All**");
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
// empRepos.deleteAll();
final Collection<Employee> emps = empRepos.myFindAll();
empRepos.delete(emps);
for (final Employee e : emps) {
System.out.println(e.toString());
// empRepos.delete(e);
}
System.out.println("** empRepos repository deleted All**");
}
public void getData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// call findOne crud method by key
System.out.println("** calling deptRepos.findOne(\"2\") **");
final Department dept = deptRepos.findOne(5);
System.out.println(dept);
// call findOne crud method for an attribute
System.out.println("** calling deptRepos.findByName(\"B\") **");
final Department dept2 = deptRepos.findByName("B");
System.out.println(dept2);
// call my own findAll
final Collection<Department> deps = deptRepos.myFindAll();
System.out.println("\n** All Departments using -> deptRepos.myFindAll()");
System.out.println("Defined as : @Query(\"SELECT * FROM /departments\") ");
System.out.println("Collection<Department> myFindAll(); ** ");
for (final Department d : deps) {
System.out.println(d.toString());
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee empt = empRepos.findOne(2);
System.out.println(empt);
final Collection<Employee> emps = empRepos.empsInDeptno(2);
System.out.println("\n ** All Employees in dept 2 using -> Collection<Employee> empsInDeptno(int deptno) **");
for (final Employee e : emps) {
System.out.println(e.toString());
}
}
public void saveData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
final Department d1 = new Department();
d1.setDeptno(1);
d1.setName("A");
final Department d2 = new Department();
d2.setDeptno(2);
d2.setName("B");
final Department d3 = new Department();
d3.setDeptno(5);
d3.setName("C");
final List<Department> dList = new ArrayList<Department>();
dList.add(d1);
dList.add(d2);
dList.add(d3);
System.out.println("** calling deptRepos.save() **");
final Iterable<Department> deptCollection = deptRepos.save(dList);
for (final Department d : deptCollection) {
System.out.println("** saved department **" + d);
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee e1 = new Employee();
e1.setEmpno(1);
e1.setName("X");
e1.setDeptno(1);
e1.setJob("J1");
final Employee e2 = new Employee();
e2.setEmpno(2);
e2.setName("Y");
e2.setDeptno(2);
e2.setJob("J2");
final Employee e3 = new Employee();
e3.setEmpno(3);
e3.setName("Y");
e3.setDeptno(5);
e3.setJob("J5");
final List<Employee> eList = new ArrayList<Employee>();
eList.add(e1);
eList.add(e2);
eList.add(e3);
System.out.println("** calling empRepos.save() **");
final Iterable<Employee> empCollection = empRepos.save(eList);
for (final Employee e : empCollection) {
System.out.println("** saved employee **" + e);
}
}
}
package spring.gemfire.repository.deptemp.controller;
import java.util.Collection;
import javax.annotation.PostConstruct;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
import spring.gemfire.repository.deptemp.util.SpringFactoryConfig;
@Controller
@RequestMapping("/gemfire")
public class GemFireJSONController {
@RequestMapping(value ="/create/employee", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createEmployee(@RequestBody Employee emp) {
System.out.println("Start createEmployee.");
getEmpRepository().save(emp);
return new ResponseEntity<>(emp, HttpStatus.CREATED);
}
@RequestMapping(value ="/create/department", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createDepartment(@RequestBody Department dept) {
System.out.println("Start createEmployee.");
getDeptRepository().save(dept);
return new ResponseEntity<>(dept, HttpStatus.CREATED);
}
@RequestMapping(value = "/employee/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Employee> getAllEmployees() {
System.out.println("Start getAllEmployeess.");
return getEmpRepository().myFindAll();
}
@RequestMapping(value = "/department/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Department> getAllDepartments() {
System.out.println("Start getAllDepartments.");
return getDeptRepository().myFindAll();
}
private DeptRepository getDeptRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(DeptRepository.BEAN_ID,
DeptRepository.class);
}
private EmpRepository getEmpRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(EmpRepository.BEAN_ID,
EmpRepository.class);
}
}
deptropository.java
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("departments")
public class Department implements Declarable, Serializable {
private static final long serialVersionUID = -9097335119586059309L;
@Id
private int deptno;
private String name;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Department other = (Department) obj;
if (deptno != other.deptno) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
deptno = Integer.parseInt(props.getProperty("deptno"));
name = props.getProperty("name");
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Department [deptno=" + deptno + ", name=" + name + "]";
}
}
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("employees")
public class Employee implements Declarable, Serializable {
private static final long serialVersionUID = -8229531542107983344L;
@Id
private int empno;
private String name;
private String job;
private int deptno;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Employee other = (Employee) obj;
if (deptno != other.deptno) { return false; }
if (empno != other.empno) { return false; }
if (job == null) {
if (other.job != null) { return false; }
} else if (!job.equals(other.job)) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public int getEmpno() {
return empno;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + empno;
result = prime * result + ((job == null) ? 0 : job.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
empno = Integer.parseInt(props.getProperty("empno"));
name = props.getProperty("name");
job = props.getProperty("job");
deptno = Integer.parseInt(props.getProperty("deptno"));
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setEmpno(final int empno) {
this.empno = empno;
}
public void setJob(final String job) {
this.job = job;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [empno=" + empno + ", name=" + name + ", job=" + job + ", deptno=" + deptno + "]";
}
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Department;
//@Repository(DeptRepository.BEAN_ID)
public interface DeptRepository extends CrudRepository<Department, Integer> {
String BEAN_ID="deptRepository";
Department findByName(String name);
@Query("SELECT * FROM /departments")
Collection<Department> myFindAll();
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Employee;
//@Repository(DeptRepository.BEAN_ID)
public interface EmpRepository extends CrudRepository<Employee, Integer> {
String BEAN_ID="empRepository";
@Query("SELECT * FROM /employees where deptno = $1")
Collection<Employee> empsInDeptno(int deptno);
@Query("SELECT * FROM /employees")
Collection<Employee> myFindAll();
}
package spring.gemfire.repository.deptemp.util;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class SpringFactoryConfig {
private static String DEFAULT_CONFIG_FILE = "gemfirebean1.xml";
private static SpringFactoryConfig INSTANCE;
public static final BeanFactory getDefaultSpringBeanFactory() {
if (INSTANCE == null) {
INSTANCE = new SpringFactoryConfig(DEFAULT_CONFIG_FILE);
}
return INSTANCE.getBeanFactory();
}
public static SpringFactoryConfig getSpringFactoryConfig(final String configFile) {
return new SpringFactoryConfig(configFile);
}
private final ApplicationContext springAppContext;
private SpringFactoryConfig(final String configFile) {
springAppContext = new ClassPathXmlApplicationContext("classpath:" + configFile);
if (springAppContext == null) { throw new IllegalStateException("Cannot get an instance of the Spring bean factory !"); }
}
public final <T> T getBean(final String name, final Class<T> beanType) {
if (springAppContext.isTypeMatch(name, beanType)) {
return beanType.cast(springAppContext.getBean(name));
} else {
throw new IllegalArgumentException("Bean " + name + " is not of appropriate type " + beanType);
}
}
public final BeanFactory getBeanFactory() {
return springAppContext;
}
}
package spring.gemfire.repository.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
public class Test {
public static void main(final String[] args) {
// TODO Auto-generated method stub
final Test t = new Test();
// t.deleteData();
// t.saveData();
t.getData();
System.out.println("all done..");
}
private ConfigurableApplicationContext ctx = null;
public Test() {
ctx = new ClassPathXmlApplicationContext("mvc-dispatcher-servlet.xml");
}
public void deleteData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// deptRepos.deleteAll();
final Collection<Department> deps = deptRepos.myFindAll();
deptRepos.delete(deps);
for (final Department d : deps) {
System.out.println(d.toString());
// deptRepos.delete(d);
}
System.out.println("** dept repository deleted All**");
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
// empRepos.deleteAll();
final Collection<Employee> emps = empRepos.myFindAll();
empRepos.delete(emps);
for (final Employee e : emps) {
System.out.println(e.toString());
// empRepos.delete(e);
}
System.out.println("** empRepos repository deleted All**");
}
public void getData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// call findOne crud method by key
System.out.println("** calling deptRepos.findOne(\"2\") **");
final Department dept = deptRepos.findOne(5);
System.out.println(dept);
// call findOne crud method for an attribute
System.out.println("** calling deptRepos.findByName(\"B\") **");
final Department dept2 = deptRepos.findByName("B");
System.out.println(dept2);
// call my own findAll
final Collection<Department> deps = deptRepos.myFindAll();
System.out.println("\n** All Departments using -> deptRepos.myFindAll()");
System.out.println("Defined as : @Query(\"SELECT * FROM /departments\") ");
System.out.println("Collection<Department> myFindAll(); ** ");
for (final Department d : deps) {
System.out.println(d.toString());
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee empt = empRepos.findOne(2);
System.out.println(empt);
final Collection<Employee> emps = empRepos.empsInDeptno(2);
System.out.println("\n ** All Employees in dept 2 using -> Collection<Employee> empsInDeptno(int deptno) **");
for (final Employee e : emps) {
System.out.println(e.toString());
}
}
public void saveData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
final Department d1 = new Department();
d1.setDeptno(1);
d1.setName("A");
final Department d2 = new Department();
d2.setDeptno(2);
d2.setName("B");
final Department d3 = new Department();
d3.setDeptno(5);
d3.setName("C");
final List<Department> dList = new ArrayList<Department>();
dList.add(d1);
dList.add(d2);
dList.add(d3);
System.out.println("** calling deptRepos.save() **");
final Iterable<Department> deptCollection = deptRepos.save(dList);
for (final Department d : deptCollection) {
System.out.println("** saved department **" + d);
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee e1 = new Employee();
e1.setEmpno(1);
e1.setName("X");
e1.setDeptno(1);
e1.setJob("J1");
final Employee e2 = new Employee();
e2.setEmpno(2);
e2.setName("Y");
e2.setDeptno(2);
e2.setJob("J2");
final Employee e3 = new Employee();
e3.setEmpno(3);
e3.setName("Y");
e3.setDeptno(5);
e3.setJob("J5");
final List<Employee> eList = new ArrayList<Employee>();
eList.add(e1);
eList.add(e2);
eList.add(e3);
System.out.println("** calling empRepos.save() **");
final Iterable<Employee> empCollection = empRepos.save(eList);
for (final Employee e : empCollection) {
System.out.println("** saved employee **" + e);
}
}
}
package spring.gemfire.repository.deptemp.controller;
import java.util.Collection;
import javax.annotation.PostConstruct;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
import spring.gemfire.repository.deptemp.util.SpringFactoryConfig;
@Controller
@RequestMapping("/gemfire")
public class GemFireJSONController {
@RequestMapping(value ="/create/employee", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createEmployee(@RequestBody Employee emp) {
System.out.println("Start createEmployee.");
getEmpRepository().save(emp);
return new ResponseEntity<>(emp, HttpStatus.CREATED);
}
@RequestMapping(value ="/create/department", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createDepartment(@RequestBody Department dept) {
System.out.println("Start createEmployee.");
getDeptRepository().save(dept);
return new ResponseEntity<>(dept, HttpStatus.CREATED);
}
@RequestMapping(value = "/employee/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Employee> getAllEmployees() {
System.out.println("Start getAllEmployeess.");
return getEmpRepository().myFindAll();
}
@RequestMapping(value = "/department/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Department> getAllDepartments() {
System.out.println("Start getAllDepartments.");
return getDeptRepository().myFindAll();
}
private DeptRepository getDeptRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(DeptRepository.BEAN_ID,
DeptRepository.class);
}
private EmpRepository getEmpRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(EmpRepository.BEAN_ID,
EmpRepository.class);
}
}
包spring.gemfire.repository.deptemp.repos;
导入java.util.Collection;
导入org.springframework.data.gemfire.repository.Query;
导入org.springframework.data.repository.crudepository;
导入org.springframework.stereotype.Repository;
导入spring.gemfire.repository.deptemp.beans.Department;
//@存储库(deptropository.BEAN\u ID)
公共接口deptropository扩展了crudepository{
字符串BEAN_ID=“deptropository”;
部门findByName(字符串名称);
@查询(“选择*自/部门”)
集合myFindAll();
}
EmpRepository.java
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("departments")
public class Department implements Declarable, Serializable {
private static final long serialVersionUID = -9097335119586059309L;
@Id
private int deptno;
private String name;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Department other = (Department) obj;
if (deptno != other.deptno) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
deptno = Integer.parseInt(props.getProperty("deptno"));
name = props.getProperty("name");
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Department [deptno=" + deptno + ", name=" + name + "]";
}
}
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("employees")
public class Employee implements Declarable, Serializable {
private static final long serialVersionUID = -8229531542107983344L;
@Id
private int empno;
private String name;
private String job;
private int deptno;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Employee other = (Employee) obj;
if (deptno != other.deptno) { return false; }
if (empno != other.empno) { return false; }
if (job == null) {
if (other.job != null) { return false; }
} else if (!job.equals(other.job)) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public int getEmpno() {
return empno;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + empno;
result = prime * result + ((job == null) ? 0 : job.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
empno = Integer.parseInt(props.getProperty("empno"));
name = props.getProperty("name");
job = props.getProperty("job");
deptno = Integer.parseInt(props.getProperty("deptno"));
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setEmpno(final int empno) {
this.empno = empno;
}
public void setJob(final String job) {
this.job = job;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [empno=" + empno + ", name=" + name + ", job=" + job + ", deptno=" + deptno + "]";
}
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Department;
//@Repository(DeptRepository.BEAN_ID)
public interface DeptRepository extends CrudRepository<Department, Integer> {
String BEAN_ID="deptRepository";
Department findByName(String name);
@Query("SELECT * FROM /departments")
Collection<Department> myFindAll();
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Employee;
//@Repository(DeptRepository.BEAN_ID)
public interface EmpRepository extends CrudRepository<Employee, Integer> {
String BEAN_ID="empRepository";
@Query("SELECT * FROM /employees where deptno = $1")
Collection<Employee> empsInDeptno(int deptno);
@Query("SELECT * FROM /employees")
Collection<Employee> myFindAll();
}
package spring.gemfire.repository.deptemp.util;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class SpringFactoryConfig {
private static String DEFAULT_CONFIG_FILE = "gemfirebean1.xml";
private static SpringFactoryConfig INSTANCE;
public static final BeanFactory getDefaultSpringBeanFactory() {
if (INSTANCE == null) {
INSTANCE = new SpringFactoryConfig(DEFAULT_CONFIG_FILE);
}
return INSTANCE.getBeanFactory();
}
public static SpringFactoryConfig getSpringFactoryConfig(final String configFile) {
return new SpringFactoryConfig(configFile);
}
private final ApplicationContext springAppContext;
private SpringFactoryConfig(final String configFile) {
springAppContext = new ClassPathXmlApplicationContext("classpath:" + configFile);
if (springAppContext == null) { throw new IllegalStateException("Cannot get an instance of the Spring bean factory !"); }
}
public final <T> T getBean(final String name, final Class<T> beanType) {
if (springAppContext.isTypeMatch(name, beanType)) {
return beanType.cast(springAppContext.getBean(name));
} else {
throw new IllegalArgumentException("Bean " + name + " is not of appropriate type " + beanType);
}
}
public final BeanFactory getBeanFactory() {
return springAppContext;
}
}
package spring.gemfire.repository.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
public class Test {
public static void main(final String[] args) {
// TODO Auto-generated method stub
final Test t = new Test();
// t.deleteData();
// t.saveData();
t.getData();
System.out.println("all done..");
}
private ConfigurableApplicationContext ctx = null;
public Test() {
ctx = new ClassPathXmlApplicationContext("mvc-dispatcher-servlet.xml");
}
public void deleteData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// deptRepos.deleteAll();
final Collection<Department> deps = deptRepos.myFindAll();
deptRepos.delete(deps);
for (final Department d : deps) {
System.out.println(d.toString());
// deptRepos.delete(d);
}
System.out.println("** dept repository deleted All**");
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
// empRepos.deleteAll();
final Collection<Employee> emps = empRepos.myFindAll();
empRepos.delete(emps);
for (final Employee e : emps) {
System.out.println(e.toString());
// empRepos.delete(e);
}
System.out.println("** empRepos repository deleted All**");
}
public void getData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// call findOne crud method by key
System.out.println("** calling deptRepos.findOne(\"2\") **");
final Department dept = deptRepos.findOne(5);
System.out.println(dept);
// call findOne crud method for an attribute
System.out.println("** calling deptRepos.findByName(\"B\") **");
final Department dept2 = deptRepos.findByName("B");
System.out.println(dept2);
// call my own findAll
final Collection<Department> deps = deptRepos.myFindAll();
System.out.println("\n** All Departments using -> deptRepos.myFindAll()");
System.out.println("Defined as : @Query(\"SELECT * FROM /departments\") ");
System.out.println("Collection<Department> myFindAll(); ** ");
for (final Department d : deps) {
System.out.println(d.toString());
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee empt = empRepos.findOne(2);
System.out.println(empt);
final Collection<Employee> emps = empRepos.empsInDeptno(2);
System.out.println("\n ** All Employees in dept 2 using -> Collection<Employee> empsInDeptno(int deptno) **");
for (final Employee e : emps) {
System.out.println(e.toString());
}
}
public void saveData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
final Department d1 = new Department();
d1.setDeptno(1);
d1.setName("A");
final Department d2 = new Department();
d2.setDeptno(2);
d2.setName("B");
final Department d3 = new Department();
d3.setDeptno(5);
d3.setName("C");
final List<Department> dList = new ArrayList<Department>();
dList.add(d1);
dList.add(d2);
dList.add(d3);
System.out.println("** calling deptRepos.save() **");
final Iterable<Department> deptCollection = deptRepos.save(dList);
for (final Department d : deptCollection) {
System.out.println("** saved department **" + d);
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee e1 = new Employee();
e1.setEmpno(1);
e1.setName("X");
e1.setDeptno(1);
e1.setJob("J1");
final Employee e2 = new Employee();
e2.setEmpno(2);
e2.setName("Y");
e2.setDeptno(2);
e2.setJob("J2");
final Employee e3 = new Employee();
e3.setEmpno(3);
e3.setName("Y");
e3.setDeptno(5);
e3.setJob("J5");
final List<Employee> eList = new ArrayList<Employee>();
eList.add(e1);
eList.add(e2);
eList.add(e3);
System.out.println("** calling empRepos.save() **");
final Iterable<Employee> empCollection = empRepos.save(eList);
for (final Employee e : empCollection) {
System.out.println("** saved employee **" + e);
}
}
}
package spring.gemfire.repository.deptemp.controller;
import java.util.Collection;
import javax.annotation.PostConstruct;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
import spring.gemfire.repository.deptemp.util.SpringFactoryConfig;
@Controller
@RequestMapping("/gemfire")
public class GemFireJSONController {
@RequestMapping(value ="/create/employee", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createEmployee(@RequestBody Employee emp) {
System.out.println("Start createEmployee.");
getEmpRepository().save(emp);
return new ResponseEntity<>(emp, HttpStatus.CREATED);
}
@RequestMapping(value ="/create/department", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createDepartment(@RequestBody Department dept) {
System.out.println("Start createEmployee.");
getDeptRepository().save(dept);
return new ResponseEntity<>(dept, HttpStatus.CREATED);
}
@RequestMapping(value = "/employee/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Employee> getAllEmployees() {
System.out.println("Start getAllEmployeess.");
return getEmpRepository().myFindAll();
}
@RequestMapping(value = "/department/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Department> getAllDepartments() {
System.out.println("Start getAllDepartments.");
return getDeptRepository().myFindAll();
}
private DeptRepository getDeptRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(DeptRepository.BEAN_ID,
DeptRepository.class);
}
private EmpRepository getEmpRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(EmpRepository.BEAN_ID,
EmpRepository.class);
}
}
包spring.gemfire.repository.deptemp.repos;
导入java.util.Collection;
导入org.springframework.data.gemfire.repository.Query;
导入org.springframework.data.repository.crudepository;
导入org.springframework.stereotype.Repository;
导入spring.gemfire.repository.deptemp.beans.Employee;
//@存储库(deptropository.BEAN\u ID)
公共接口存储库扩展了Crudepository{
字符串BEAN_ID=“empRepository”;
@查询(“选择*FROM/employees,其中deptno=$1”)
收集empsInDeptno(int deptno);
@查询(“选择*来自/员工”)
集合myFindAll();
}
SpringFactoryConfig.java
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("departments")
public class Department implements Declarable, Serializable {
private static final long serialVersionUID = -9097335119586059309L;
@Id
private int deptno;
private String name;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Department other = (Department) obj;
if (deptno != other.deptno) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
deptno = Integer.parseInt(props.getProperty("deptno"));
name = props.getProperty("name");
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Department [deptno=" + deptno + ", name=" + name + "]";
}
}
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("employees")
public class Employee implements Declarable, Serializable {
private static final long serialVersionUID = -8229531542107983344L;
@Id
private int empno;
private String name;
private String job;
private int deptno;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Employee other = (Employee) obj;
if (deptno != other.deptno) { return false; }
if (empno != other.empno) { return false; }
if (job == null) {
if (other.job != null) { return false; }
} else if (!job.equals(other.job)) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public int getEmpno() {
return empno;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + empno;
result = prime * result + ((job == null) ? 0 : job.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
empno = Integer.parseInt(props.getProperty("empno"));
name = props.getProperty("name");
job = props.getProperty("job");
deptno = Integer.parseInt(props.getProperty("deptno"));
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setEmpno(final int empno) {
this.empno = empno;
}
public void setJob(final String job) {
this.job = job;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [empno=" + empno + ", name=" + name + ", job=" + job + ", deptno=" + deptno + "]";
}
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Department;
//@Repository(DeptRepository.BEAN_ID)
public interface DeptRepository extends CrudRepository<Department, Integer> {
String BEAN_ID="deptRepository";
Department findByName(String name);
@Query("SELECT * FROM /departments")
Collection<Department> myFindAll();
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Employee;
//@Repository(DeptRepository.BEAN_ID)
public interface EmpRepository extends CrudRepository<Employee, Integer> {
String BEAN_ID="empRepository";
@Query("SELECT * FROM /employees where deptno = $1")
Collection<Employee> empsInDeptno(int deptno);
@Query("SELECT * FROM /employees")
Collection<Employee> myFindAll();
}
package spring.gemfire.repository.deptemp.util;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class SpringFactoryConfig {
private static String DEFAULT_CONFIG_FILE = "gemfirebean1.xml";
private static SpringFactoryConfig INSTANCE;
public static final BeanFactory getDefaultSpringBeanFactory() {
if (INSTANCE == null) {
INSTANCE = new SpringFactoryConfig(DEFAULT_CONFIG_FILE);
}
return INSTANCE.getBeanFactory();
}
public static SpringFactoryConfig getSpringFactoryConfig(final String configFile) {
return new SpringFactoryConfig(configFile);
}
private final ApplicationContext springAppContext;
private SpringFactoryConfig(final String configFile) {
springAppContext = new ClassPathXmlApplicationContext("classpath:" + configFile);
if (springAppContext == null) { throw new IllegalStateException("Cannot get an instance of the Spring bean factory !"); }
}
public final <T> T getBean(final String name, final Class<T> beanType) {
if (springAppContext.isTypeMatch(name, beanType)) {
return beanType.cast(springAppContext.getBean(name));
} else {
throw new IllegalArgumentException("Bean " + name + " is not of appropriate type " + beanType);
}
}
public final BeanFactory getBeanFactory() {
return springAppContext;
}
}
package spring.gemfire.repository.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
public class Test {
public static void main(final String[] args) {
// TODO Auto-generated method stub
final Test t = new Test();
// t.deleteData();
// t.saveData();
t.getData();
System.out.println("all done..");
}
private ConfigurableApplicationContext ctx = null;
public Test() {
ctx = new ClassPathXmlApplicationContext("mvc-dispatcher-servlet.xml");
}
public void deleteData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// deptRepos.deleteAll();
final Collection<Department> deps = deptRepos.myFindAll();
deptRepos.delete(deps);
for (final Department d : deps) {
System.out.println(d.toString());
// deptRepos.delete(d);
}
System.out.println("** dept repository deleted All**");
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
// empRepos.deleteAll();
final Collection<Employee> emps = empRepos.myFindAll();
empRepos.delete(emps);
for (final Employee e : emps) {
System.out.println(e.toString());
// empRepos.delete(e);
}
System.out.println("** empRepos repository deleted All**");
}
public void getData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// call findOne crud method by key
System.out.println("** calling deptRepos.findOne(\"2\") **");
final Department dept = deptRepos.findOne(5);
System.out.println(dept);
// call findOne crud method for an attribute
System.out.println("** calling deptRepos.findByName(\"B\") **");
final Department dept2 = deptRepos.findByName("B");
System.out.println(dept2);
// call my own findAll
final Collection<Department> deps = deptRepos.myFindAll();
System.out.println("\n** All Departments using -> deptRepos.myFindAll()");
System.out.println("Defined as : @Query(\"SELECT * FROM /departments\") ");
System.out.println("Collection<Department> myFindAll(); ** ");
for (final Department d : deps) {
System.out.println(d.toString());
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee empt = empRepos.findOne(2);
System.out.println(empt);
final Collection<Employee> emps = empRepos.empsInDeptno(2);
System.out.println("\n ** All Employees in dept 2 using -> Collection<Employee> empsInDeptno(int deptno) **");
for (final Employee e : emps) {
System.out.println(e.toString());
}
}
public void saveData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
final Department d1 = new Department();
d1.setDeptno(1);
d1.setName("A");
final Department d2 = new Department();
d2.setDeptno(2);
d2.setName("B");
final Department d3 = new Department();
d3.setDeptno(5);
d3.setName("C");
final List<Department> dList = new ArrayList<Department>();
dList.add(d1);
dList.add(d2);
dList.add(d3);
System.out.println("** calling deptRepos.save() **");
final Iterable<Department> deptCollection = deptRepos.save(dList);
for (final Department d : deptCollection) {
System.out.println("** saved department **" + d);
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee e1 = new Employee();
e1.setEmpno(1);
e1.setName("X");
e1.setDeptno(1);
e1.setJob("J1");
final Employee e2 = new Employee();
e2.setEmpno(2);
e2.setName("Y");
e2.setDeptno(2);
e2.setJob("J2");
final Employee e3 = new Employee();
e3.setEmpno(3);
e3.setName("Y");
e3.setDeptno(5);
e3.setJob("J5");
final List<Employee> eList = new ArrayList<Employee>();
eList.add(e1);
eList.add(e2);
eList.add(e3);
System.out.println("** calling empRepos.save() **");
final Iterable<Employee> empCollection = empRepos.save(eList);
for (final Employee e : empCollection) {
System.out.println("** saved employee **" + e);
}
}
}
package spring.gemfire.repository.deptemp.controller;
import java.util.Collection;
import javax.annotation.PostConstruct;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
import spring.gemfire.repository.deptemp.util.SpringFactoryConfig;
@Controller
@RequestMapping("/gemfire")
public class GemFireJSONController {
@RequestMapping(value ="/create/employee", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createEmployee(@RequestBody Employee emp) {
System.out.println("Start createEmployee.");
getEmpRepository().save(emp);
return new ResponseEntity<>(emp, HttpStatus.CREATED);
}
@RequestMapping(value ="/create/department", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createDepartment(@RequestBody Department dept) {
System.out.println("Start createEmployee.");
getDeptRepository().save(dept);
return new ResponseEntity<>(dept, HttpStatus.CREATED);
}
@RequestMapping(value = "/employee/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Employee> getAllEmployees() {
System.out.println("Start getAllEmployeess.");
return getEmpRepository().myFindAll();
}
@RequestMapping(value = "/department/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Department> getAllDepartments() {
System.out.println("Start getAllDepartments.");
return getDeptRepository().myFindAll();
}
private DeptRepository getDeptRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(DeptRepository.BEAN_ID,
DeptRepository.class);
}
private EmpRepository getEmpRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(EmpRepository.BEAN_ID,
EmpRepository.class);
}
}
包spring.gemfire.repository.deptemp.util;
导入org.springframework.beans.factory.BeanFactory;
导入org.springframework.context.ApplicationContext;
导入org.springframework.context.support.ClassPathXmlApplicationContext;
公共最终类SpringFactoryConfig{
私有静态字符串DEFAULT_CONFIG_FILE=“gemfirebean1.xml”;
私有静态SpringFactoryConfig实例;
公共静态最终BeanFactory getDefaultSpringBeanFactory(){
if(实例==null){
实例=新的SpringFactoryConfig(默认配置文件);
}
返回INSTANCE.getBeanFactory();
}
公共静态SpringFactoryConfig getSpringFactoryConfig(最终字符串配置文件){
返回新的SpringFactoryConfig(配置文件);
}
私有最终应用上下文springAppContext;
私有SpringFactoryConfig(最终字符串配置文件){
springAppContext=new ClassPathXmlApplicationContext(“类路径:+configFile”);
if(springAppContext==null){抛出新的IllegalStateException(“无法获取SpringBean工厂的实例!”);}
}
公共最终T getBean(最终字符串名称,最终类beanType){
if(springAppContext.isTypeMatch(名称,beanType)){
返回beanType.cast(springAppContext.getBean(name));
}否则{
抛出新的IllegalArgumentException(“Bean”+name+”不是合适的类型“+beanType”);
}
}
公共最终BeanFactory getBeanFactory(){
返回上下文;
}
}
Test.java
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("departments")
public class Department implements Declarable, Serializable {
private static final long serialVersionUID = -9097335119586059309L;
@Id
private int deptno;
private String name;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Department other = (Department) obj;
if (deptno != other.deptno) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
deptno = Integer.parseInt(props.getProperty("deptno"));
name = props.getProperty("name");
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Department [deptno=" + deptno + ", name=" + name + "]";
}
}
package spring.gemfire.repository.deptemp.beans;
import java.io.Serializable;
import java.util.Properties;
import org.springframework.data.annotation.Id;
import org.springframework.data.gemfire.mapping.Region;
import com.gemstone.gemfire.cache.Declarable;
@Region("employees")
public class Employee implements Declarable, Serializable {
private static final long serialVersionUID = -8229531542107983344L;
@Id
private int empno;
private String name;
private String job;
private int deptno;
@Override
public boolean equals(final Object obj) {
if (this == obj) { return true; }
if (obj == null) { return false; }
if (getClass() != obj.getClass()) { return false; }
final Employee other = (Employee) obj;
if (deptno != other.deptno) { return false; }
if (empno != other.empno) { return false; }
if (job == null) {
if (other.job != null) { return false; }
} else if (!job.equals(other.job)) { return false; }
if (name == null) {
if (other.name != null) { return false; }
} else if (!name.equals(other.name)) { return false; }
return true;
}
public int getDeptno() {
return deptno;
}
public int getEmpno() {
return empno;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + deptno;
result = prime * result + empno;
result = prime * result + ((job == null) ? 0 : job.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public void init(final Properties props) {
// TODO Auto-generated method stub
empno = Integer.parseInt(props.getProperty("empno"));
name = props.getProperty("name");
job = props.getProperty("job");
deptno = Integer.parseInt(props.getProperty("deptno"));
}
public void setDeptno(final int deptno) {
this.deptno = deptno;
}
public void setEmpno(final int empno) {
this.empno = empno;
}
public void setJob(final String job) {
this.job = job;
}
public void setName(final String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [empno=" + empno + ", name=" + name + ", job=" + job + ", deptno=" + deptno + "]";
}
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Department;
//@Repository(DeptRepository.BEAN_ID)
public interface DeptRepository extends CrudRepository<Department, Integer> {
String BEAN_ID="deptRepository";
Department findByName(String name);
@Query("SELECT * FROM /departments")
Collection<Department> myFindAll();
}
package spring.gemfire.repository.deptemp.repos;
import java.util.Collection;
import org.springframework.data.gemfire.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import spring.gemfire.repository.deptemp.beans.Employee;
//@Repository(DeptRepository.BEAN_ID)
public interface EmpRepository extends CrudRepository<Employee, Integer> {
String BEAN_ID="empRepository";
@Query("SELECT * FROM /employees where deptno = $1")
Collection<Employee> empsInDeptno(int deptno);
@Query("SELECT * FROM /employees")
Collection<Employee> myFindAll();
}
package spring.gemfire.repository.deptemp.util;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class SpringFactoryConfig {
private static String DEFAULT_CONFIG_FILE = "gemfirebean1.xml";
private static SpringFactoryConfig INSTANCE;
public static final BeanFactory getDefaultSpringBeanFactory() {
if (INSTANCE == null) {
INSTANCE = new SpringFactoryConfig(DEFAULT_CONFIG_FILE);
}
return INSTANCE.getBeanFactory();
}
public static SpringFactoryConfig getSpringFactoryConfig(final String configFile) {
return new SpringFactoryConfig(configFile);
}
private final ApplicationContext springAppContext;
private SpringFactoryConfig(final String configFile) {
springAppContext = new ClassPathXmlApplicationContext("classpath:" + configFile);
if (springAppContext == null) { throw new IllegalStateException("Cannot get an instance of the Spring bean factory !"); }
}
public final <T> T getBean(final String name, final Class<T> beanType) {
if (springAppContext.isTypeMatch(name, beanType)) {
return beanType.cast(springAppContext.getBean(name));
} else {
throw new IllegalArgumentException("Bean " + name + " is not of appropriate type " + beanType);
}
}
public final BeanFactory getBeanFactory() {
return springAppContext;
}
}
package spring.gemfire.repository.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
public class Test {
public static void main(final String[] args) {
// TODO Auto-generated method stub
final Test t = new Test();
// t.deleteData();
// t.saveData();
t.getData();
System.out.println("all done..");
}
private ConfigurableApplicationContext ctx = null;
public Test() {
ctx = new ClassPathXmlApplicationContext("mvc-dispatcher-servlet.xml");
}
public void deleteData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// deptRepos.deleteAll();
final Collection<Department> deps = deptRepos.myFindAll();
deptRepos.delete(deps);
for (final Department d : deps) {
System.out.println(d.toString());
// deptRepos.delete(d);
}
System.out.println("** dept repository deleted All**");
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
// empRepos.deleteAll();
final Collection<Employee> emps = empRepos.myFindAll();
empRepos.delete(emps);
for (final Employee e : emps) {
System.out.println(e.toString());
// empRepos.delete(e);
}
System.out.println("** empRepos repository deleted All**");
}
public void getData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
// call findOne crud method by key
System.out.println("** calling deptRepos.findOne(\"2\") **");
final Department dept = deptRepos.findOne(5);
System.out.println(dept);
// call findOne crud method for an attribute
System.out.println("** calling deptRepos.findByName(\"B\") **");
final Department dept2 = deptRepos.findByName("B");
System.out.println(dept2);
// call my own findAll
final Collection<Department> deps = deptRepos.myFindAll();
System.out.println("\n** All Departments using -> deptRepos.myFindAll()");
System.out.println("Defined as : @Query(\"SELECT * FROM /departments\") ");
System.out.println("Collection<Department> myFindAll(); ** ");
for (final Department d : deps) {
System.out.println(d.toString());
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee empt = empRepos.findOne(2);
System.out.println(empt);
final Collection<Employee> emps = empRepos.empsInDeptno(2);
System.out.println("\n ** All Employees in dept 2 using -> Collection<Employee> empsInDeptno(int deptno) **");
for (final Employee e : emps) {
System.out.println(e.toString());
}
}
public void saveData() {
final DeptRepository deptRepos = ctx.getBean(DeptRepository.class);
// get quick size
System.out.println("** Size of dept repository **");
System.out.println("Size = " + deptRepos.count());
final Department d1 = new Department();
d1.setDeptno(1);
d1.setName("A");
final Department d2 = new Department();
d2.setDeptno(2);
d2.setName("B");
final Department d3 = new Department();
d3.setDeptno(5);
d3.setName("C");
final List<Department> dList = new ArrayList<Department>();
dList.add(d1);
dList.add(d2);
dList.add(d3);
System.out.println("** calling deptRepos.save() **");
final Iterable<Department> deptCollection = deptRepos.save(dList);
for (final Department d : deptCollection) {
System.out.println("** saved department **" + d);
}
final EmpRepository empRepos = ctx.getBean(EmpRepository.class);
// get quick size
System.out.println("** Size of emp repository **");
System.out.println("Size = " + empRepos.count());
final Employee e1 = new Employee();
e1.setEmpno(1);
e1.setName("X");
e1.setDeptno(1);
e1.setJob("J1");
final Employee e2 = new Employee();
e2.setEmpno(2);
e2.setName("Y");
e2.setDeptno(2);
e2.setJob("J2");
final Employee e3 = new Employee();
e3.setEmpno(3);
e3.setName("Y");
e3.setDeptno(5);
e3.setJob("J5");
final List<Employee> eList = new ArrayList<Employee>();
eList.add(e1);
eList.add(e2);
eList.add(e3);
System.out.println("** calling empRepos.save() **");
final Iterable<Employee> empCollection = empRepos.save(eList);
for (final Employee e : empCollection) {
System.out.println("** saved employee **" + e);
}
}
}
package spring.gemfire.repository.deptemp.controller;
import java.util.Collection;
import javax.annotation.PostConstruct;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import spring.gemfire.repository.deptemp.beans.Department;
import spring.gemfire.repository.deptemp.beans.Employee;
import spring.gemfire.repository.deptemp.repos.DeptRepository;
import spring.gemfire.repository.deptemp.repos.EmpRepository;
import spring.gemfire.repository.deptemp.util.SpringFactoryConfig;
@Controller
@RequestMapping("/gemfire")
public class GemFireJSONController {
@RequestMapping(value ="/create/employee", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createEmployee(@RequestBody Employee emp) {
System.out.println("Start createEmployee.");
getEmpRepository().save(emp);
return new ResponseEntity<>(emp, HttpStatus.CREATED);
}
@RequestMapping(value ="/create/department", method = RequestMethod.POST,headers="Accept=application/json")
public ResponseEntity<?> createDepartment(@RequestBody Department dept) {
System.out.println("Start createEmployee.");
getDeptRepository().save(dept);
return new ResponseEntity<>(dept, HttpStatus.CREATED);
}
@RequestMapping(value = "/employee/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Employee> getAllEmployees() {
System.out.println("Start getAllEmployeess.");
return getEmpRepository().myFindAll();
}
@RequestMapping(value = "/department/all", method = RequestMethod.GET,headers="Accept=application/json")
public @ResponseBody Collection<Department> getAllDepartments() {
System.out.println("Start getAllDepartments.");
return getDeptRepository().myFindAll();
}
private DeptRepository getDeptRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(DeptRepository.BEAN_ID,
DeptRepository.class);
}
private EmpRepository getEmpRepository(){
return SpringFactoryConfig.getDefaultSpringBeanFactory().getBean(EmpRepository.BEAN_ID,
EmpRepository.class);
}
}
包spring.gemfire.repository.test;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.List;
导入org.springframework.context.ConfigurableApplicationContext;
导入org.springframework.context.annotation.AnnotationConfigApplicationContext;
导入org.springframework.context.support.ClassPathXmlApplicationContext;
导入spring.gemfire.repository.deptemp.beans.Department;
导入spring.gemfire.repository.deptemp.beans.Employee;
导入spring.gemfire.repository.deptemp.repos.DeptRepository;
导入spring.gemfire.repository.deptemp.repos.EmpRepository;
公开课考试{
公共静态void main(最终字符串[]args){
//TODO自动生成的方法存根
最终试验t=新试验();
//t.删除数据();
//t.saveData();
t、 getData();
System.out.println(“全部完成”);
}
私有ConfigurableApplicationContext ctx=null;
公开考试(){
ctx=new ClassPathXmlApplicationContext(“mvc dispatcher servlet.xml”);
}
公共void deleteData(){
final-deptropository-deptropos=ctx.getBean(deptropository.class);
//快速调整尺寸
System.out.println(“**部门存储库大小**”);
System.out.println(“Size=“+deptRepos.count());
//deptRepos.deleteAll();
最终收集deps=deptRepos.myFindAll();
deptRepos.删除(deps);
主管(最终d部门:deps){
System.out.println(d.toString());
//删除(d)段;
}
System.out.println(“**部门存储库全部删除**”);
最终EmpRepository empRepos=ctx.getBean(EmpRepository.class);
//快速调整尺寸
System.out.println(“**emp存储库大小**”);
System.out.println(“Size=“+empRepos.count());
//empRepos.deleteAll();
最终收集emps=empRepos.myFindAll();
环境管理计划。删除(环境管理计划);