SlideShare a Scribd company logo
1 of 44
Simplifying Apache Geode
with Spring Data
By John Blum
@john_blum
1
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
History
April 2015
SD GemFire 1.7
Branch for
*Apache Geode
June 2015
1.7.0.APACHE-
GEODE-EA-M1
1.0.0-
incubating.M1
April 2016
1.0.0.APACHE-
GEODE-
INCUBATING-M2
1.0.0-
incubating.M2
October 2016
1.0.0.APACHE-
GEODE-
INCUBATING-M3
1.0.0-
incubating.M3
November 2016
1.0.0.APACHE-
GEODE-
INCUBATING-
RELEASE
*1.0.0-incubating
April 2017
SD Geode Kay
2.0.x
1.2.1
2
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
3
Spring Data for
Apache Geode
Kay
“Simple things should be simple;
complex things should be possible”
– Alan Kay
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Core Themes in SDG - 2017
 Get Up & Running as Quickly and Easily as possible
 Using
 Make the Journey to the Cloud as Simple as possible
 On
5
Spring
Data
Blog Post: $ diff –q spring-data-gemfire spring-data-geode
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-gemfire</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-geode</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
6
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Data Geode 2.0 (Kay)
Apache Geode 1.2.1
7
Spring Data GemFire 2.0 (Kay)
Pivotal GemFire 9.1.1
Apache Geode 1.2.1
Kay
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
8
Spring
Cloud
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
How does it work?
New Annotation-based Configuration
 Convention over Configuration
 Use sensible defaults for all configuration parameters OOTB
 Enable users to get up and running, quickly and easily (no hassle).
 Allow user to override and customize the default, provided configuration
https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config
9
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
@Demo
11
https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations
14
@SpringBootApplication
@ClientCacheApplication
public class MySpringBootApacheGeodeClient { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Pools
15
@SpringBootApplication
@ClientCacheApplication
@EnablePools(pools = { @EnablePool(host = “hostname”, port = 1234), … })
public class MySpringBootApacheGeodeClient { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Entity-defined Regions
16
@SpringBootApplication
@ClientCacheApplication
@EnableGemfireRepositories(basePackageClasses = EntityRepository.class)
@EnableEntityDefinedRegions(basePackageClasses = EntityType.class)
@EnableIndexing(..)
public class MySpringBootApacheGeodeClient { .. }
@Region(name = “Customers”)
class Customer {
@Id Long id;
@Indexed(..) String name;
@LuceneIndexed(..) String title;
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Caching-defined Regions
17
@SpringBootApplication
@ClientCacheApplication
@EnableGemfireCaching
@EnableCachingDefinedRegions(..)
public class MySpringBootApacheGeodeClient { .. }
@Service
class CustomerService {
@Cacheable(“Accounts”)
Account getAccount(Customer customer) { .. }
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Cluster Configuration*
18
@SpringBootApplication
@ClientCacheApplication
@EnableClusterConfiguration(useHttp = true)
public class MySpringBootApacheGeodeClient { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: CQ
19
@SpringBootApplication
@ClientCacheApplication
@EnableContinuousQueries(..)
public class MySpringBootApacheGeodeClient { .. }
@Service
class CustomerService {
@ContinuousQuery(name = “CreditScoreUpdates”,
query = “SELECT * FROM /Customers WHERE …”)
void creditScoreChange(CqEvent event) { .. }
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Serialization
20
@SpringBootApplication
@ClientCacheApplication
@EnablePdx(..)
public class MySpringBootApacheGeodeClient { .. }
Registers the SDG o.s.d.g.mapping.MappingPdxSerializer by default
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Security
21
@SpringBootApplication
@ClientCacheApplication
@EnableSecurity(..)
@EnableSsl(..)
public class MySpringBootApacheGeodeClient { .. }
# application.properties
spring.data.gemfire.security.username = jblum
spring.data.gemfire.security.password = secret
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Client Annotations: Other
22
@SpringBootApplication
@ClientCacheApplication
@EnableGemFireProperties(..)
@EnableLogging(logLevel = “info”, …)
public class MySpringBootApacheGeodeClient { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations
24
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
public class MySpringBootApacheGeodeServer { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: CacheServers
25
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableCacheServers(servers = { @EnableCacheServer(..), … })
public class MySpringBootApacheGeodeServer { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Processes
26
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableLocator(port = 11235)
@EnableManager(port = 1199)
public class MySpringBootApacheGeodeServer { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Services
27
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableHttpService(..)
@EnableMemcachedServer(..)
@EnableRedisServer(..)
public class MySpringBootApacheGeodeServer { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Regions
28
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableCompression(..)
@EnableDiskStores(diskStores = { @EnableDiskStore(..), … })
@EnableEntityDefinedRegions(basePackageClasses = EntityType.class)
@EnableEviction(..)
@EnableExpiration(..)
@EnableOffHeap(memorySize = “1024g”)
public class MySpringBootApacheGeodeServer { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Expiration
29
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableExpiration(..)
…
public class MySpringBootApacheGeodeServer { .. }
@Region(”Customers”)
@TimeToLiveExpiration(timeout = “600”, action = “LOCAL_DESTROY”)
@IdleTimeoutExpiration(timeout = “120”, action = “INVALIDATE”)
@Expiration(..)
class Customer { .. }
https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config-region-expiration
https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap:region:expiration:annotation
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Security
30
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableSecurity(..)
@EnableSsl(..)
public class MySpringBootApacheGeodeServer {
@Bean
AuthorizingRealm ldapRealm(LdapContextFactory contextFactory) {
DefaultLdapRealm ldapRealm = new DefaultLdapRealm();
ldapRealm.setContextFactory(contextFactory);
return ldapRealm;
}
https://spring.io/blog/2016/11/10/spring-data-geode-1-0-0-incubating-release-released#apache-shiro-realms
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Server Annotations: Other
31
@SpringBootApplication
@CacheServerApplication(name = “MySpringBootApacheGeodeServer”)
@EnableGemFireProperties(remoteLocators = “..”, …)
@EnableLogging(logLevel = “warning”, …)
@EnableStatistics(..)
public class MySpringBootApacheGeodeServer { .. }
Configuration @Runtime
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Annotations: Properties Configuration
33
@SpringBootApplication
@ClientCacheApplication(locators = {
@Locator(host = “HostnameOne”, port = 1111),
@Locator(host = “HostnameTwo”, port = 2222),
…
})
public class MySpringBootApacheGeodeClient { .. }
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Annotations: Properties Configuration
34
@SpringBootApplication
@ClientCacheApplication
public class MySpringBootApacheGeodeClient { .. }
# application.properties
spring.data.gemfire.pool.locators=HostnameOne[1111],HostnameTwo[2222], …
spring.data.gemfire.pool.default.locators=…
spring.data.gemfire.pool.swimming.locators=…
…
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Annotations: Properties Configuration
35
public @interface ClientCacheApplication {
/**
* Configures the GemFire {@link org.apache.geode.distributed.Locator Locators} to which
* this cache client will connect.
*
* Use either the {@literal spring.data.gemfire.pool.default.locators} property
* or the {@literal spring.data.gemfire.pool.locators} property in {@literal application.properties}.
*/
Locator[] locators() default {};
…
}
https://docs.spring.io/spring-data/geode/docs/current/api/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Annotations: Configurers
36
@SpringBootApplication
@ClientCacheApplication
public class MySpringBootApacheGeodeClient {
@Bean
ClientCacheConfigurer locatorsConfigurer(
@Value(“${geode.locators.hostsPorts:localhost[10334]}”)
String hostsPorts) {
return (beanName, clientCacheFactoryBean) ->
clientCacheFactoryBean.setLocators(
ConnectionEndpointList.parse(10334, hostsPorts));
}
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What’s Next?
• Function Executions from Repository
• Paging support in Repository
• Query Projections
• Reactive Repository extensions for CQ
• Spring Security support
• Annotation support for CacheCallbacks
• Auto-generated IDs (Region keys)
• New Spring-driven Test (Context) Framework
37
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Function Executions from Repository
38
public interface CustomerRepository
implements CrudRepository<Customer, Long> {
@Function(..)
CreditScore calculateCreditScore(Customer customer);
}
Customer jonDoe = …
CreditScore creditScore = customerRepository.calculateCreditScore(jonDoe);
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Paging (& Sorting) Support
39
public interface CustomerRepository
implements CrudRepository<Customer, Long> {
List<Customer> findByLastNameOrderByCustomerFirstNameAsc(
String firstName);
List<Customer> findByLastName(String lastName, Sort sort);
// NEW!
Page<Customer> findTop100ByCreditScoreGreaterThan(CreditScore score,
Pageable pageable);
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Query Projections (DTO)
40
public interface CustomerRepository
implements CrudRepository<Customer, Long> {
Iterable<CustomerNameProjection> findByLastName(String lastName);
}
@Region(“Customers”)
class Customer {
@Id Long id;
String firstName, lastName;
String getName() {
return String.format(“%1$s %2$s”,
firstName, lastName);
}
class CustomerNameProjection {
String name;
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Repository Extensions for CQ
41
public interface CustomerRepository
implements CrudRepository<Customer, Long> {
@ContinuousQuery(..)
Flux<Customer> findByCreditScoreGreaterThanAndCreditScoreLessThan(
CreditScore low, CreditScore high);
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Annotation-based CacheCallbacks Support
42
@Component
public class MyCallbacks {
@CacheListener(regions = { “Customers”, “Accounts” })
public <K, V> void afterCreate(EntryEvent<K, V> event) { .. }
@CacheWriter(region = “Customers”)
public <K, V> void beforeCreate(EntryEvent(K, V> event) { .. }
. . .
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Unit Testing Apache Geode with Spring
With Integration Testing support in-progress…
@TestDemo
43
https://github.com/jxblum/spring-data-tests-4-gemfire
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Data Geode 2.1 (Lovelace)
Apache Geode 1.3.0
44
Spring Data GemFire 2.1 (Lovelace)
Pivotal GemFire 9.2.0
Apache Geode 1.3.0
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
References
• Reference Documentation: https://docs.spring.io/spring-data/geode/docs/current/reference/html/
• Javadoc: https://docs.spring.io/spring-data/geode/docs/current/api/
• GitHub: https://github.com/spring-projects/spring-data-geode
• JIRA: https://jira.spring.io/browse/DATAGEODE
• StackOverflow: https://stackoverflow.com/questions/tagged/spring-data-gemfire
• Presentation Examples: https://github.com/jxblum/simple-spring-geode-application
• Examples: https://github.com/jxblum/contacts-application
Me: @john_blum (Twitter) https://spring.io/team/jxblum (GitHub)
Questions
Answers
47© 2014 Pivotal Software, Inc. All rights reserved.
Thank You
Learn More. Stay Connected.
Refactoring to a System of Systems - Oliver Gierke
Thursday @ 11:50 AM – Room #2008
48
#springone@s1p

More Related Content

What's hot

Oracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceOracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceTaewan Kim
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Shaun Smith
 
Spring MVC 4.2: New and Noteworthy
Spring MVC 4.2: New and NoteworthySpring MVC 4.2: New and Noteworthy
Spring MVC 4.2: New and NoteworthyRossen Stoyanchev
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouEdward Burns
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishArun Gupta
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurTakashi Ito
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Simon Ritter
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?Simon Ritter
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsDavid Delabassee
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmapglassfish
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive ProgrammingRossen Stoyanchev
 
JDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaJDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaSimon Ritter
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5Shaun Smith
 
Running Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud InfrastructureRunning Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud InfrastructureOracle Developers
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015Edward Burns
 

What's hot (20)

Oracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceOracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud Resource
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
Spring MVC 4.2: New and Noteworthy
Spring MVC 4.2: New and NoteworthySpring MVC 4.2: New and Noteworthy
Spring MVC 4.2: New and Noteworthy
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To YouCON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
MVC 1.0 / JSR 371
MVC 1.0 / JSR 371MVC 1.0 / JSR 371
MVC 1.0 / JSR 371
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmap
 
Intro To Reactive Programming
Intro To Reactive ProgrammingIntro To Reactive Programming
Intro To Reactive Programming
 
JDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for JavaJDK 9: The Start of a New Future for Java
JDK 9: The Start of a New Future for Java
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
 
Running Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud InfrastructureRunning Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud Infrastructure
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015
 

Similar to Simplifying Apache Geode with Spring Data

Session State Caching with Spring
Session State Caching with SpringSession State Caching with Spring
Session State Caching with SpringVMware Tanzu
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)VMware Tanzu
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesVMware Tanzu
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...VMware Tanzu
 
Core Spring + Reactive 김민석
Core Spring + Reactive  김민석Core Spring + Reactive  김민석
Core Spring + Reactive 김민석VMware Tanzu Korea
 
What's new in Reactor Californium
What's new in Reactor CaliforniumWhat's new in Reactor Californium
What's new in Reactor CaliforniumStéphane Maldini
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteChristian Tzolov
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End StateVMware Tanzu
 
SpringOnePlatform2017 recap
SpringOnePlatform2017 recapSpringOnePlatform2017 recap
SpringOnePlatform2017 recapminseok kim
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott AndrewsVMware Tanzu
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheVMware Tanzu
 
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...VMware Tanzu
 
Reactive frontends with RxJS and Angular
Reactive frontends with RxJS and AngularReactive frontends with RxJS and Angular
Reactive frontends with RxJS and AngularVMware Tanzu
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...cornelia davis
 
Debugging Serverless for Cloud
Debugging Serverless for CloudDebugging Serverless for Cloud
Debugging Serverless for CloudVMware Tanzu
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaJoe Stein
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteVMware Tanzu
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...VMware Tanzu
 
Reactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringReactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringStéphane Maldini
 
Automation and Culture Changes for 40M Subscriber Platform Operation
Automation and Culture Changes for 40M Subscriber Platform OperationAutomation and Culture Changes for 40M Subscriber Platform Operation
Automation and Culture Changes for 40M Subscriber Platform OperationVMware Tanzu
 

Similar to Simplifying Apache Geode with Spring Data (20)

Session State Caching with Spring
Session State Caching with SpringSession State Caching with Spring
Session State Caching with Spring
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
 
Core Spring + Reactive 김민석
Core Spring + Reactive  김민석Core Spring + Reactive  김민석
Core Spring + Reactive 김민석
 
What's new in Reactor Californium
What's new in Reactor CaliforniumWhat's new in Reactor Californium
What's new in Reactor Californium
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End State
 
SpringOnePlatform2017 recap
SpringOnePlatform2017 recapSpringOnePlatform2017 recap
SpringOnePlatform2017 recap
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott Andrews
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud Cache
 
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
 
Reactive frontends with RxJS and Angular
Reactive frontends with RxJS and AngularReactive frontends with RxJS and Angular
Reactive frontends with RxJS and Angular
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
 
Debugging Serverless for Cloud
Debugging Serverless for CloudDebugging Serverless for Cloud
Debugging Serverless for Cloud
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
 
Reactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringReactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and Spring
 
Automation and Culture Changes for 40M Subscriber Platform Operation
Automation and Culture Changes for 40M Subscriber Platform OperationAutomation and Culture Changes for 40M Subscriber Platform Operation
Automation and Culture Changes for 40M Subscriber Platform Operation
 

More from VMware Tanzu

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptxVMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchVMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishVMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - FrenchVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerVMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsVMware Tanzu
 

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Recently uploaded (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

Simplifying Apache Geode with Spring Data

  • 1. Simplifying Apache Geode with Spring Data By John Blum @john_blum 1
  • 2. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ History April 2015 SD GemFire 1.7 Branch for *Apache Geode June 2015 1.7.0.APACHE- GEODE-EA-M1 1.0.0- incubating.M1 April 2016 1.0.0.APACHE- GEODE- INCUBATING-M2 1.0.0- incubating.M2 October 2016 1.0.0.APACHE- GEODE- INCUBATING-M3 1.0.0- incubating.M3 November 2016 1.0.0.APACHE- GEODE- INCUBATING- RELEASE *1.0.0-incubating April 2017 SD Geode Kay 2.0.x 1.2.1 2
  • 3. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3 Spring Data for Apache Geode Kay
  • 4. “Simple things should be simple; complex things should be possible” – Alan Kay
  • 5. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Core Themes in SDG - 2017  Get Up & Running as Quickly and Easily as possible  Using  Make the Journey to the Cloud as Simple as possible  On 5 Spring Data Blog Post: $ diff –q spring-data-gemfire spring-data-geode
  • 6. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-gemfire</artifactId> <version>2.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-geode</artifactId> <version>2.0.2.RELEASE</version> </dependency> 6
  • 7. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data Geode 2.0 (Kay) Apache Geode 1.2.1 7 Spring Data GemFire 2.0 (Kay) Pivotal GemFire 9.1.1 Apache Geode 1.2.1 Kay
  • 8. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 8 Spring Cloud
  • 9. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ How does it work? New Annotation-based Configuration  Convention over Configuration  Use sensible defaults for all configuration parameters OOTB  Enable users to get up and running, quickly and easily (no hassle).  Allow user to override and customize the default, provided configuration https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config 9
  • 10. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ @Demo 11 https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config
  • 11. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations 14 @SpringBootApplication @ClientCacheApplication public class MySpringBootApacheGeodeClient { .. }
  • 12. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Pools 15 @SpringBootApplication @ClientCacheApplication @EnablePools(pools = { @EnablePool(host = “hostname”, port = 1234), … }) public class MySpringBootApacheGeodeClient { .. }
  • 13. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Entity-defined Regions 16 @SpringBootApplication @ClientCacheApplication @EnableGemfireRepositories(basePackageClasses = EntityRepository.class) @EnableEntityDefinedRegions(basePackageClasses = EntityType.class) @EnableIndexing(..) public class MySpringBootApacheGeodeClient { .. } @Region(name = “Customers”) class Customer { @Id Long id; @Indexed(..) String name; @LuceneIndexed(..) String title; }
  • 14. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Caching-defined Regions 17 @SpringBootApplication @ClientCacheApplication @EnableGemfireCaching @EnableCachingDefinedRegions(..) public class MySpringBootApacheGeodeClient { .. } @Service class CustomerService { @Cacheable(“Accounts”) Account getAccount(Customer customer) { .. } }
  • 15. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Cluster Configuration* 18 @SpringBootApplication @ClientCacheApplication @EnableClusterConfiguration(useHttp = true) public class MySpringBootApacheGeodeClient { .. }
  • 16. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: CQ 19 @SpringBootApplication @ClientCacheApplication @EnableContinuousQueries(..) public class MySpringBootApacheGeodeClient { .. } @Service class CustomerService { @ContinuousQuery(name = “CreditScoreUpdates”, query = “SELECT * FROM /Customers WHERE …”) void creditScoreChange(CqEvent event) { .. } }
  • 17. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Serialization 20 @SpringBootApplication @ClientCacheApplication @EnablePdx(..) public class MySpringBootApacheGeodeClient { .. } Registers the SDG o.s.d.g.mapping.MappingPdxSerializer by default
  • 18. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Security 21 @SpringBootApplication @ClientCacheApplication @EnableSecurity(..) @EnableSsl(..) public class MySpringBootApacheGeodeClient { .. } # application.properties spring.data.gemfire.security.username = jblum spring.data.gemfire.security.password = secret
  • 19. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Client Annotations: Other 22 @SpringBootApplication @ClientCacheApplication @EnableGemFireProperties(..) @EnableLogging(logLevel = “info”, …) public class MySpringBootApacheGeodeClient { .. }
  • 20. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations 24 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) public class MySpringBootApacheGeodeServer { .. }
  • 21. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: CacheServers 25 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableCacheServers(servers = { @EnableCacheServer(..), … }) public class MySpringBootApacheGeodeServer { .. }
  • 22. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Processes 26 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableLocator(port = 11235) @EnableManager(port = 1199) public class MySpringBootApacheGeodeServer { .. }
  • 23. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Services 27 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableHttpService(..) @EnableMemcachedServer(..) @EnableRedisServer(..) public class MySpringBootApacheGeodeServer { .. }
  • 24. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Regions 28 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableCompression(..) @EnableDiskStores(diskStores = { @EnableDiskStore(..), … }) @EnableEntityDefinedRegions(basePackageClasses = EntityType.class) @EnableEviction(..) @EnableExpiration(..) @EnableOffHeap(memorySize = “1024g”) public class MySpringBootApacheGeodeServer { .. }
  • 25. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Expiration 29 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableExpiration(..) … public class MySpringBootApacheGeodeServer { .. } @Region(”Customers”) @TimeToLiveExpiration(timeout = “600”, action = “LOCAL_DESTROY”) @IdleTimeoutExpiration(timeout = “120”, action = “INVALIDATE”) @Expiration(..) class Customer { .. } https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config-region-expiration https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap:region:expiration:annotation
  • 26. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Security 30 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableSecurity(..) @EnableSsl(..) public class MySpringBootApacheGeodeServer { @Bean AuthorizingRealm ldapRealm(LdapContextFactory contextFactory) { DefaultLdapRealm ldapRealm = new DefaultLdapRealm(); ldapRealm.setContextFactory(contextFactory); return ldapRealm; } https://spring.io/blog/2016/11/10/spring-data-geode-1-0-0-incubating-release-released#apache-shiro-realms
  • 27. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Server Annotations: Other 31 @SpringBootApplication @CacheServerApplication(name = “MySpringBootApacheGeodeServer”) @EnableGemFireProperties(remoteLocators = “..”, …) @EnableLogging(logLevel = “warning”, …) @EnableStatistics(..) public class MySpringBootApacheGeodeServer { .. }
  • 29. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Annotations: Properties Configuration 33 @SpringBootApplication @ClientCacheApplication(locators = { @Locator(host = “HostnameOne”, port = 1111), @Locator(host = “HostnameTwo”, port = 2222), … }) public class MySpringBootApacheGeodeClient { .. }
  • 30. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Annotations: Properties Configuration 34 @SpringBootApplication @ClientCacheApplication public class MySpringBootApacheGeodeClient { .. } # application.properties spring.data.gemfire.pool.locators=HostnameOne[1111],HostnameTwo[2222], … spring.data.gemfire.pool.default.locators=… spring.data.gemfire.pool.swimming.locators=… …
  • 31. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Annotations: Properties Configuration 35 public @interface ClientCacheApplication { /** * Configures the GemFire {@link org.apache.geode.distributed.Locator Locators} to which * this cache client will connect. * * Use either the {@literal spring.data.gemfire.pool.default.locators} property * or the {@literal spring.data.gemfire.pool.locators} property in {@literal application.properties}. */ Locator[] locators() default {}; … } https://docs.spring.io/spring-data/geode/docs/current/api/org/springframework/data/gemfire/config/annotation/ClientCacheApplication.html
  • 32. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Annotations: Configurers 36 @SpringBootApplication @ClientCacheApplication public class MySpringBootApacheGeodeClient { @Bean ClientCacheConfigurer locatorsConfigurer( @Value(“${geode.locators.hostsPorts:localhost[10334]}”) String hostsPorts) { return (beanName, clientCacheFactoryBean) -> clientCacheFactoryBean.setLocators( ConnectionEndpointList.parse(10334, hostsPorts)); } }
  • 33. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ What’s Next? • Function Executions from Repository • Paging support in Repository • Query Projections • Reactive Repository extensions for CQ • Spring Security support • Annotation support for CacheCallbacks • Auto-generated IDs (Region keys) • New Spring-driven Test (Context) Framework 37
  • 34. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Function Executions from Repository 38 public interface CustomerRepository implements CrudRepository<Customer, Long> { @Function(..) CreditScore calculateCreditScore(Customer customer); } Customer jonDoe = … CreditScore creditScore = customerRepository.calculateCreditScore(jonDoe);
  • 35. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Paging (& Sorting) Support 39 public interface CustomerRepository implements CrudRepository<Customer, Long> { List<Customer> findByLastNameOrderByCustomerFirstNameAsc( String firstName); List<Customer> findByLastName(String lastName, Sort sort); // NEW! Page<Customer> findTop100ByCreditScoreGreaterThan(CreditScore score, Pageable pageable); }
  • 36. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Query Projections (DTO) 40 public interface CustomerRepository implements CrudRepository<Customer, Long> { Iterable<CustomerNameProjection> findByLastName(String lastName); } @Region(“Customers”) class Customer { @Id Long id; String firstName, lastName; String getName() { return String.format(“%1$s %2$s”, firstName, lastName); } class CustomerNameProjection { String name; }
  • 37. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Reactive Repository Extensions for CQ 41 public interface CustomerRepository implements CrudRepository<Customer, Long> { @ContinuousQuery(..) Flux<Customer> findByCreditScoreGreaterThanAndCreditScoreLessThan( CreditScore low, CreditScore high); }
  • 38. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Annotation-based CacheCallbacks Support 42 @Component public class MyCallbacks { @CacheListener(regions = { “Customers”, “Accounts” }) public <K, V> void afterCreate(EntryEvent<K, V> event) { .. } @CacheWriter(region = “Customers”) public <K, V> void beforeCreate(EntryEvent(K, V> event) { .. } . . . }
  • 39. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Unit Testing Apache Geode with Spring With Integration Testing support in-progress… @TestDemo 43 https://github.com/jxblum/spring-data-tests-4-gemfire
  • 40. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Data Geode 2.1 (Lovelace) Apache Geode 1.3.0 44 Spring Data GemFire 2.1 (Lovelace) Pivotal GemFire 9.2.0 Apache Geode 1.3.0
  • 41. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ References • Reference Documentation: https://docs.spring.io/spring-data/geode/docs/current/reference/html/ • Javadoc: https://docs.spring.io/spring-data/geode/docs/current/api/ • GitHub: https://github.com/spring-projects/spring-data-geode • JIRA: https://jira.spring.io/browse/DATAGEODE • StackOverflow: https://stackoverflow.com/questions/tagged/spring-data-gemfire • Presentation Examples: https://github.com/jxblum/simple-spring-geode-application • Examples: https://github.com/jxblum/contacts-application Me: @john_blum (Twitter) https://spring.io/team/jxblum (GitHub)
  • 43. 47© 2014 Pivotal Software, Inc. All rights reserved. Thank You
  • 44. Learn More. Stay Connected. Refactoring to a System of Systems - Oliver Gierke Thursday @ 11:50 AM – Room #2008 48 #springone@s1p

Editor's Notes

  1. Spring Data for Apache Geode joins the Spring Data Kay Release Train as of RC1 Regular, predictable release cadence
  2. Misconceptions about Spring… Spring is a Web Application Framework Spring’s programming model is unique and Spring uses it’s own conventions Built on fundamental OO principles (POJO) Software Design Patterns (IoC/DI, AOP) and… Builds on Standards Open Source (OSS)
  3. No Code Changes No Import Statement Changes No Class Name Changes (Geode -> GemFire; Geode -> GemFire) Pivotal GemFire uses the org.apache.geode package namespace Apache Geode uses Pivotal GemFire class names… org.apache.geode.cache.GemFireCacheImpl
  4. To the Cloud (from the IDE) and back again
  5. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  6. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  7. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  8. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  9. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  10. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  11. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  12. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  13. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  14. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  15. Define multiple Apache Shiro Realms; Order them.
  16. Annotation attributes are strongly-typed
  17. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  18. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  19. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  20. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  21. Similar to SDG’s Function Execution support with @OnRegion today. https://docs.spring.io/spring-data/geode/docs/current/reference/html/#function-annotations https://docs.spring.io/spring-data/geode/docs/current/reference/html/#function-execution
  22. SDG Repository infrastructure and extension already supports Sorting https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.special-parameters
  23. The Value-Type DTO https://docs.spring.io/spring-data/commons/docs/current/reference/html/#projections.dtos