You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by John Blum <jb...@pivotal.io> on 2017/11/28 07:39:48 UTC

[ANNOUNCE] Spring Data Geode 2.0.2.RELEASE (Kay SR2) Available!

Greetings Apache Geode Community-

It is my pleasure to announce the availability of *Spring Data* *Kay
SR2* (*Service
Release* 2) which includes *Spring Data Geode* *2.0.2.RELEASE*.  The
official release announcement is here...

https://spring.io/blog/2017/11/27/spring-data-ingalls-sr9-an
d-kay-sr2-released

Unfortunately, we missed the announce for the first service release of *Kay*,
which occurred back on October 27th; my apologies.

So, in both *Kay SR1 + SR2*, you will find the follow improvements...


* Better, more reliable integration between *Spring's Cache Abstraction* [1]
and *Spring* container initialization (particularly in the context of
proxies) with Geode CQ [2].  I have even have a complete example here [3]
(README in-progress).

* In both *Entity-defined* as well as *Caching-defined* *Regions*, I have
enabled the ability to configure the ClientRegionShortcut for client-side
generated Regions and RegionShortcut for server-side generated Regions.
You can learn more about *Entity-defined Regions* [4] and *Caching-defined
Regions* [5] by following the links.

* In addition to *Spring's Caching Annotations* [6] I have also added
support for JSR-107 *JCache* API Annotations in SDG's *Caching-defined
Regions*.  That means, if you used any of the JSR-107 annotations in your
application service components and declared the SDG
@EnableCachingDefinedRegions annotation on your *Spring Boot* @Configuration
class, then you can define cache client Regions from the "caches"
identified in your use of JSR-107 annotations.

* I added Annotation support for configuring Apache Geode Region
Compression [7] using the @EnableCompression annotation; see docs [8] for
more details.  By default, it just enables the Google Snappy Compressor,
provided by Apache Geode OOTB.


Several other little enhancements were made and help to improve the overall
development experience when using Apache Geode, especially in a *Spring*
context.  See the *changelog* [9] for a complete list of changes in *Kay
SR1 + SR2*.


Finally, I leave you with a...


*SPRING-GEODE TIP:*

Let's say you want to create a simple *Spring Boot*, ClientCache
application to store and manage customer data.  It is as simple as this...


// Define Customer...

@Region("Customers")
public class Customer {

   private Long id;

   @Indexed(from = "/Customers")
   private String name;

   ...
}


// Define a Repository to persist and query Customers

public interface CustomerRepository extends CrudRepository<Customer, Long> {
   ...
}


// Finally, create your *Spring Boot* application & run everything...

@SpringBootApplication
@ClientCacheApplication
@EnableEntityDefinedRegions(basePackageClasses = Customer.class,
clientRegionShortcut = ClientRegionShortcut.LOCAL)
@EnableGemfireRepositories(basePackageClasses = CustomerRepository.class)
@EnableIndexing
@EnablePdx
//@EnableClusterConfiguration(useHttp = true)
public class SpringBootApacheGeodeClientApplication {

   public static void main(String[] args) {
      SpringApplication.run(SpringBootApacheGeodeClientApplication.class,
args);
   }

   ...
}


I challenge anyone to find any boilerplate code in this example application
(other than the basic, yet essential application/feature bootstrapping).

No longer do you need boilerplate code to configure and create a
*ClientCache*, *Pool*, *Regions*, *Indexes*, PDX, etc or to perform basic
CRUD and simple (OQL) Queries.

As am application developer, you can remain completely *focused* and
*committed* to your application business requirements and logic, and let
*SDG* worry about the plumbing.

Because, I am "initially" using a ClientRegionShortcut.LOCAL, this "
*ClientCache*" application runs properly, all by itself, without the need
to start a server.  This is ideal when you are rapidly prototyping your
application and want to iterate (DEV-TEST) quickly!

However, it is a simple matter to also convert this application to use
Apache Geode's client/server topology as well... simply remove the
configuration for the clientRegionShortcut attribute in the
@EnableEntityDefinedRegions annotation.

By default, a client Region is set to PROXY and all Region ops will be sent
to a server using the *ClientCache* "DEFAULT" *Pool*, which is configured
to connect to a server running on localhost, listening on port 40404, by
default.

You can start 1 or more server(s) using *Gfsh* and optionally configure
them either using *Gfsh* or SDG.  You choose!

While it is likely that you will use *Gfsh* to script your configuration of
the server(s) in the cluster, there is nothing that helps you on the
client, other than SDG, of course!  Imagine if you have 100s of Regions to
configure, and not only Regions, but Indexes, Disk Stores, and other schema
objects as well.

While it is appropriate (and even "*recommended*") to use *Gfsh* to script
your final production configuration deployment, during your "building" and
"testing' phases, personally, I prefer to use the new SDG
@EnableClusterConfiguration(useHttp = true) annotation.  This annotation
will push all *Entity-defined Region* configuration up to the server(s) in
your cluster, from the client app.  Not only will it create corresponding
server-side (PARTITION) Regions for all the client (PROXY) Regions, it will
also create Indexes from your application domain object @Indexed fields on
the server(s) as well.

NOTE: You need a full installation of Apache Geode on the servers to use
the
@EnableClusterConfiguration feature.

And, if that were not enough, the @EnableClusterConfiguration annotation
performs the cluster server(s) modification in such a way that Apache
Geode's Cluster Configuration service [10] will remember these changes.
Therefore, if you had new nodes, those nodes will have a consistent
configuration.  Additionally, if you bounce your entire cluster, or the
cluster goes down, it will come back up with the same configuration when
restarted.

SDG is very careful not to stomp on your existing (sever/cluster)
configuration, hopefully for obvious reasons.  If the Region already
exists, SDG will not attempt to create it.

I will be posting more examples like this over time so that everyone here
will become familiar with the features and conveniences that SDG is adding.

You find details on the complete example ( https://github.com/
jxblum/simple-spring-geode-application) in *GitHub* [11].

Happy coding!

-- 
-John


[1] https://docs.spring.io/spring/docs/current/spring-framew
ork-reference/integration.html#cache
[2] http://geode.apache.org/docs/guide/12/developing/continu
ous_querying/chapter_overview.html
[3] https://github.com/jxblum/contacts-application/tree/mast
er/continuous-query-example
[4] https://docs.spring.io/spring-data/geode/docs/current/re
ference/html/#bootstrap-annotation-config-regions
[5] https://docs.spring.io/spring-data/geode/docs/current/re
ference/html/#bootstrap-annotation-config-caching
[6] https://docs.spring.io/spring/docs/current/spring-framew
ork-reference/integration.html#cache-jsr-107
[7] http://geode.apache.org/docs/guide/12/managing/region_co
mpression/region_compression.html
[8] https://docs.spring.io/spring-data/geode/docs/current/re
ference/html/#bootstrap-annotation-config-region-compression
[9] https://docs.spring.io/spring-data/geode/docs/2.0.2.RELE
ASE/changelog.txt
[10] http://geode.apache.org/docs/guide/12/configuring/clust
er_config/gfsh_persist.html
[11] https://github.com/jxblum/simple-spring-geode-application

Re: [ANNOUNCE] Spring Data Geode 2.0.2.RELEASE (Kay SR2) Available!

Posted by Swapnil Bawaskar <sb...@pivotal.io>.
This is awesome! Thanks John.

On Tue, Nov 28, 2017 at 9:36 AM Udo Kohlmeyer <uk...@pivotal.io> wrote:

> Another great release from the Spring world!!
>
> --Udo
>
> On Mon, Nov 27, 2017 at 11:39 PM, John Blum <jb...@pivotal.io> wrote:
>
> > Greetings Apache Geode Community-
> >
> > It is my pleasure to announce the availability of *Spring Data* *Kay
> > SR2* (*Service
> > Release* 2) which includes *Spring Data Geode* *2.0.2.RELEASE*.  The
> > official release announcement is here...
> >
> > https://spring.io/blog/2017/11/27/spring-data-ingalls-sr9-an
> > d-kay-sr2-released
> >
> > Unfortunately, we missed the announce for the first service release of
> > *Kay*,
> > which occurred back on October 27th; my apologies.
> >
> > So, in both *Kay SR1 + SR2*, you will find the follow improvements...
> >
> >
> > * Better, more reliable integration between *Spring's Cache Abstraction*
> > [1]
> > and *Spring* container initialization (particularly in the context of
> > proxies) with Geode CQ [2].  I have even have a complete example here [3]
> > (README in-progress).
> >
> > * In both *Entity-defined* as well as *Caching-defined* *Regions*, I have
> > enabled the ability to configure the ClientRegionShortcut for client-side
> > generated Regions and RegionShortcut for server-side generated Regions.
> > You can learn more about *Entity-defined Regions* [4] and
> *Caching-defined
> > Regions* [5] by following the links.
> >
> > * In addition to *Spring's Caching Annotations* [6] I have also added
> > support for JSR-107 *JCache* API Annotations in SDG's *Caching-defined
> > Regions*.  That means, if you used any of the JSR-107 annotations in your
> > application service components and declared the SDG
> > @EnableCachingDefinedRegions annotation on your *Spring Boot*
> > @Configuration
> > class, then you can define cache client Regions from the "caches"
> > identified in your use of JSR-107 annotations.
> >
> > * I added Annotation support for configuring Apache Geode Region
> > Compression [7] using the @EnableCompression annotation; see docs [8] for
> > more details.  By default, it just enables the Google Snappy Compressor,
> > provided by Apache Geode OOTB.
> >
> >
> > Several other little enhancements were made and help to improve the
> overall
> > development experience when using Apache Geode, especially in a *Spring*
> > context.  See the *changelog* [9] for a complete list of changes in *Kay
> > SR1 + SR2*.
> >
> >
> > Finally, I leave you with a...
> >
> >
> > *SPRING-GEODE TIP:*
> >
> > Let's say you want to create a simple *Spring Boot*, ClientCache
> > application to store and manage customer data.  It is as simple as
> this...
> >
> >
> > // Define Customer...
> >
> > @Region("Customers")
> > public class Customer {
> >
> >    private Long id;
> >
> >    @Indexed(from = "/Customers")
> >    private String name;
> >
> >    ...
> > }
> >
> >
> > // Define a Repository to persist and query Customers
> >
> > public interface CustomerRepository extends CrudRepository<Customer,
> Long>
> > {
> >    ...
> > }
> >
> >
> > // Finally, create your *Spring Boot* application & run everything...
> >
> > @SpringBootApplication
> > @ClientCacheApplication
> > @EnableEntityDefinedRegions(basePackageClasses = Customer.class,
> > clientRegionShortcut = ClientRegionShortcut.LOCAL)
> > @EnableGemfireRepositories(basePackageClasses = CustomerRepository.class)
> > @EnableIndexing
> > @EnablePdx
> > //@EnableClusterConfiguration(useHttp = true)
> > public class SpringBootApacheGeodeClientApplication {
> >
> >    public static void main(String[] args) {
> >       SpringApplication.run(SpringBootApacheGeodeClientApplication.class,
> > args);
> >    }
> >
> >    ...
> > }
> >
> >
> > I challenge anyone to find any boilerplate code in this example
> application
> > (other than the basic, yet essential application/feature bootstrapping).
> >
> > No longer do you need boilerplate code to configure and create a
> > *ClientCache*, *Pool*, *Regions*, *Indexes*, PDX, etc or to perform basic
> > CRUD and simple (OQL) Queries.
> >
> > As am application developer, you can remain completely *focused* and
> > *committed* to your application business requirements and logic, and let
> > *SDG* worry about the plumbing.
> >
> > Because, I am "initially" using a ClientRegionShortcut.LOCAL, this "
> > *ClientCache*" application runs properly, all by itself, without the need
> > to start a server.  This is ideal when you are rapidly prototyping your
> > application and want to iterate (DEV-TEST) quickly!
> >
> > However, it is a simple matter to also convert this application to use
> > Apache Geode's client/server topology as well... simply remove the
> > configuration for the clientRegionShortcut attribute in the
> > @EnableEntityDefinedRegions annotation.
> >
> > By default, a client Region is set to PROXY and all Region ops will be
> sent
> > to a server using the *ClientCache* "DEFAULT" *Pool*, which is configured
> > to connect to a server running on localhost, listening on port 40404, by
> > default.
> >
> > You can start 1 or more server(s) using *Gfsh* and optionally configure
> > them either using *Gfsh* or SDG.  You choose!
> >
> > While it is likely that you will use *Gfsh* to script your configuration
> of
> > the server(s) in the cluster, there is nothing that helps you on the
> > client, other than SDG, of course!  Imagine if you have 100s of Regions
> to
> > configure, and not only Regions, but Indexes, Disk Stores, and other
> schema
> > objects as well.
> >
> > While it is appropriate (and even "*recommended*") to use *Gfsh* to
> script
> > your final production configuration deployment, during your "building"
> and
> > "testing' phases, personally, I prefer to use the new SDG
> > @EnableClusterConfiguration(useHttp = true) annotation.  This annotation
> > will push all *Entity-defined Region* configuration up to the server(s)
> in
> > your cluster, from the client app.  Not only will it create corresponding
> > server-side (PARTITION) Regions for all the client (PROXY) Regions, it
> will
> > also create Indexes from your application domain object @Indexed fields
> on
> > the server(s) as well.
> >
> > NOTE: You need a full installation of Apache Geode on the servers to use
> > the
> > @EnableClusterConfiguration feature.
> >
> > And, if that were not enough, the @EnableClusterConfiguration annotation
> > performs the cluster server(s) modification in such a way that Apache
> > Geode's Cluster Configuration service [10] will remember these changes.
> > Therefore, if you had new nodes, those nodes will have a consistent
> > configuration.  Additionally, if you bounce your entire cluster, or the
> > cluster goes down, it will come back up with the same configuration when
> > restarted.
> >
> > SDG is very careful not to stomp on your existing (sever/cluster)
> > configuration, hopefully for obvious reasons.  If the Region already
> > exists, SDG will not attempt to create it.
> >
> > I will be posting more examples like this over time so that everyone here
> > will become familiar with the features and conveniences that SDG is
> adding.
> >
> > You find details on the complete example ( https://github.com/
> > jxblum/simple-spring-geode-application) in *GitHub* [11].
> >
> > Happy coding!
> >
> > --
> > -John
> >
> >
> > [1] https://docs.spring.io/spring/docs/current/spring-framew
> > ork-reference/integration.html#cache
> > [2] http://geode.apache.org/docs/guide/12/developing/continu
> > ous_querying/chapter_overview.html
> > [3] https://github.com/jxblum/contacts-application/tree/mast
> > er/continuous-query-example
> > [4] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-regions
> > [5] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-caching
> > [6] https://docs.spring.io/spring/docs/current/spring-framew
> > ork-reference/integration.html#cache-jsr-107
> > [7] http://geode.apache.org/docs/guide/12/managing/region_co
> > mpression/region_compression.html
> > [8] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-region-compression
> > [9] https://docs.spring.io/spring-data/geode/docs/2.0.2.RELE
> > ASE/changelog.txt
> > [10] http://geode.apache.org/docs/guide/12/configuring/clust
> > er_config/gfsh_persist.html
> > [11] https://github.com/jxblum/simple-spring-geode-application
> >
>
>
>
> --
> Kindest Regards
> -----------------------------
> *Udo Kohlmeyer* | *Pivotal*
> ukohlmeyer@pivotal.io
> <http://www.gopivotal.com/>
> www.pivotal.io
>

Re: [ANNOUNCE] Spring Data Geode 2.0.2.RELEASE (Kay SR2) Available!

Posted by Swapnil Bawaskar <sb...@pivotal.io>.
This is awesome! Thanks John.

On Tue, Nov 28, 2017 at 9:36 AM Udo Kohlmeyer <uk...@pivotal.io> wrote:

> Another great release from the Spring world!!
>
> --Udo
>
> On Mon, Nov 27, 2017 at 11:39 PM, John Blum <jb...@pivotal.io> wrote:
>
> > Greetings Apache Geode Community-
> >
> > It is my pleasure to announce the availability of *Spring Data* *Kay
> > SR2* (*Service
> > Release* 2) which includes *Spring Data Geode* *2.0.2.RELEASE*.  The
> > official release announcement is here...
> >
> > https://spring.io/blog/2017/11/27/spring-data-ingalls-sr9-an
> > d-kay-sr2-released
> >
> > Unfortunately, we missed the announce for the first service release of
> > *Kay*,
> > which occurred back on October 27th; my apologies.
> >
> > So, in both *Kay SR1 + SR2*, you will find the follow improvements...
> >
> >
> > * Better, more reliable integration between *Spring's Cache Abstraction*
> > [1]
> > and *Spring* container initialization (particularly in the context of
> > proxies) with Geode CQ [2].  I have even have a complete example here [3]
> > (README in-progress).
> >
> > * In both *Entity-defined* as well as *Caching-defined* *Regions*, I have
> > enabled the ability to configure the ClientRegionShortcut for client-side
> > generated Regions and RegionShortcut for server-side generated Regions.
> > You can learn more about *Entity-defined Regions* [4] and
> *Caching-defined
> > Regions* [5] by following the links.
> >
> > * In addition to *Spring's Caching Annotations* [6] I have also added
> > support for JSR-107 *JCache* API Annotations in SDG's *Caching-defined
> > Regions*.  That means, if you used any of the JSR-107 annotations in your
> > application service components and declared the SDG
> > @EnableCachingDefinedRegions annotation on your *Spring Boot*
> > @Configuration
> > class, then you can define cache client Regions from the "caches"
> > identified in your use of JSR-107 annotations.
> >
> > * I added Annotation support for configuring Apache Geode Region
> > Compression [7] using the @EnableCompression annotation; see docs [8] for
> > more details.  By default, it just enables the Google Snappy Compressor,
> > provided by Apache Geode OOTB.
> >
> >
> > Several other little enhancements were made and help to improve the
> overall
> > development experience when using Apache Geode, especially in a *Spring*
> > context.  See the *changelog* [9] for a complete list of changes in *Kay
> > SR1 + SR2*.
> >
> >
> > Finally, I leave you with a...
> >
> >
> > *SPRING-GEODE TIP:*
> >
> > Let's say you want to create a simple *Spring Boot*, ClientCache
> > application to store and manage customer data.  It is as simple as
> this...
> >
> >
> > // Define Customer...
> >
> > @Region("Customers")
> > public class Customer {
> >
> >    private Long id;
> >
> >    @Indexed(from = "/Customers")
> >    private String name;
> >
> >    ...
> > }
> >
> >
> > // Define a Repository to persist and query Customers
> >
> > public interface CustomerRepository extends CrudRepository<Customer,
> Long>
> > {
> >    ...
> > }
> >
> >
> > // Finally, create your *Spring Boot* application & run everything...
> >
> > @SpringBootApplication
> > @ClientCacheApplication
> > @EnableEntityDefinedRegions(basePackageClasses = Customer.class,
> > clientRegionShortcut = ClientRegionShortcut.LOCAL)
> > @EnableGemfireRepositories(basePackageClasses = CustomerRepository.class)
> > @EnableIndexing
> > @EnablePdx
> > //@EnableClusterConfiguration(useHttp = true)
> > public class SpringBootApacheGeodeClientApplication {
> >
> >    public static void main(String[] args) {
> >       SpringApplication.run(SpringBootApacheGeodeClientApplication.class,
> > args);
> >    }
> >
> >    ...
> > }
> >
> >
> > I challenge anyone to find any boilerplate code in this example
> application
> > (other than the basic, yet essential application/feature bootstrapping).
> >
> > No longer do you need boilerplate code to configure and create a
> > *ClientCache*, *Pool*, *Regions*, *Indexes*, PDX, etc or to perform basic
> > CRUD and simple (OQL) Queries.
> >
> > As am application developer, you can remain completely *focused* and
> > *committed* to your application business requirements and logic, and let
> > *SDG* worry about the plumbing.
> >
> > Because, I am "initially" using a ClientRegionShortcut.LOCAL, this "
> > *ClientCache*" application runs properly, all by itself, without the need
> > to start a server.  This is ideal when you are rapidly prototyping your
> > application and want to iterate (DEV-TEST) quickly!
> >
> > However, it is a simple matter to also convert this application to use
> > Apache Geode's client/server topology as well... simply remove the
> > configuration for the clientRegionShortcut attribute in the
> > @EnableEntityDefinedRegions annotation.
> >
> > By default, a client Region is set to PROXY and all Region ops will be
> sent
> > to a server using the *ClientCache* "DEFAULT" *Pool*, which is configured
> > to connect to a server running on localhost, listening on port 40404, by
> > default.
> >
> > You can start 1 or more server(s) using *Gfsh* and optionally configure
> > them either using *Gfsh* or SDG.  You choose!
> >
> > While it is likely that you will use *Gfsh* to script your configuration
> of
> > the server(s) in the cluster, there is nothing that helps you on the
> > client, other than SDG, of course!  Imagine if you have 100s of Regions
> to
> > configure, and not only Regions, but Indexes, Disk Stores, and other
> schema
> > objects as well.
> >
> > While it is appropriate (and even "*recommended*") to use *Gfsh* to
> script
> > your final production configuration deployment, during your "building"
> and
> > "testing' phases, personally, I prefer to use the new SDG
> > @EnableClusterConfiguration(useHttp = true) annotation.  This annotation
> > will push all *Entity-defined Region* configuration up to the server(s)
> in
> > your cluster, from the client app.  Not only will it create corresponding
> > server-side (PARTITION) Regions for all the client (PROXY) Regions, it
> will
> > also create Indexes from your application domain object @Indexed fields
> on
> > the server(s) as well.
> >
> > NOTE: You need a full installation of Apache Geode on the servers to use
> > the
> > @EnableClusterConfiguration feature.
> >
> > And, if that were not enough, the @EnableClusterConfiguration annotation
> > performs the cluster server(s) modification in such a way that Apache
> > Geode's Cluster Configuration service [10] will remember these changes.
> > Therefore, if you had new nodes, those nodes will have a consistent
> > configuration.  Additionally, if you bounce your entire cluster, or the
> > cluster goes down, it will come back up with the same configuration when
> > restarted.
> >
> > SDG is very careful not to stomp on your existing (sever/cluster)
> > configuration, hopefully for obvious reasons.  If the Region already
> > exists, SDG will not attempt to create it.
> >
> > I will be posting more examples like this over time so that everyone here
> > will become familiar with the features and conveniences that SDG is
> adding.
> >
> > You find details on the complete example ( https://github.com/
> > jxblum/simple-spring-geode-application) in *GitHub* [11].
> >
> > Happy coding!
> >
> > --
> > -John
> >
> >
> > [1] https://docs.spring.io/spring/docs/current/spring-framew
> > ork-reference/integration.html#cache
> > [2] http://geode.apache.org/docs/guide/12/developing/continu
> > ous_querying/chapter_overview.html
> > [3] https://github.com/jxblum/contacts-application/tree/mast
> > er/continuous-query-example
> > [4] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-regions
> > [5] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-caching
> > [6] https://docs.spring.io/spring/docs/current/spring-framew
> > ork-reference/integration.html#cache-jsr-107
> > [7] http://geode.apache.org/docs/guide/12/managing/region_co
> > mpression/region_compression.html
> > [8] https://docs.spring.io/spring-data/geode/docs/current/re
> > ference/html/#bootstrap-annotation-config-region-compression
> > [9] https://docs.spring.io/spring-data/geode/docs/2.0.2.RELE
> > ASE/changelog.txt
> > [10] http://geode.apache.org/docs/guide/12/configuring/clust
> > er_config/gfsh_persist.html
> > [11] https://github.com/jxblum/simple-spring-geode-application
> >
>
>
>
> --
> Kindest Regards
> -----------------------------
> *Udo Kohlmeyer* | *Pivotal*
> ukohlmeyer@pivotal.io
> <http://www.gopivotal.com/>
> www.pivotal.io
>

Re: [ANNOUNCE] Spring Data Geode 2.0.2.RELEASE (Kay SR2) Available!

Posted by Udo Kohlmeyer <uk...@pivotal.io>.
Another great release from the Spring world!!

--Udo

On Mon, Nov 27, 2017 at 11:39 PM, John Blum <jb...@pivotal.io> wrote:

> Greetings Apache Geode Community-
>
> It is my pleasure to announce the availability of *Spring Data* *Kay
> SR2* (*Service
> Release* 2) which includes *Spring Data Geode* *2.0.2.RELEASE*.  The
> official release announcement is here...
>
> https://spring.io/blog/2017/11/27/spring-data-ingalls-sr9-an
> d-kay-sr2-released
>
> Unfortunately, we missed the announce for the first service release of
> *Kay*,
> which occurred back on October 27th; my apologies.
>
> So, in both *Kay SR1 + SR2*, you will find the follow improvements...
>
>
> * Better, more reliable integration between *Spring's Cache Abstraction*
> [1]
> and *Spring* container initialization (particularly in the context of
> proxies) with Geode CQ [2].  I have even have a complete example here [3]
> (README in-progress).
>
> * In both *Entity-defined* as well as *Caching-defined* *Regions*, I have
> enabled the ability to configure the ClientRegionShortcut for client-side
> generated Regions and RegionShortcut for server-side generated Regions.
> You can learn more about *Entity-defined Regions* [4] and *Caching-defined
> Regions* [5] by following the links.
>
> * In addition to *Spring's Caching Annotations* [6] I have also added
> support for JSR-107 *JCache* API Annotations in SDG's *Caching-defined
> Regions*.  That means, if you used any of the JSR-107 annotations in your
> application service components and declared the SDG
> @EnableCachingDefinedRegions annotation on your *Spring Boot*
> @Configuration
> class, then you can define cache client Regions from the "caches"
> identified in your use of JSR-107 annotations.
>
> * I added Annotation support for configuring Apache Geode Region
> Compression [7] using the @EnableCompression annotation; see docs [8] for
> more details.  By default, it just enables the Google Snappy Compressor,
> provided by Apache Geode OOTB.
>
>
> Several other little enhancements were made and help to improve the overall
> development experience when using Apache Geode, especially in a *Spring*
> context.  See the *changelog* [9] for a complete list of changes in *Kay
> SR1 + SR2*.
>
>
> Finally, I leave you with a...
>
>
> *SPRING-GEODE TIP:*
>
> Let's say you want to create a simple *Spring Boot*, ClientCache
> application to store and manage customer data.  It is as simple as this...
>
>
> // Define Customer...
>
> @Region("Customers")
> public class Customer {
>
>    private Long id;
>
>    @Indexed(from = "/Customers")
>    private String name;
>
>    ...
> }
>
>
> // Define a Repository to persist and query Customers
>
> public interface CustomerRepository extends CrudRepository<Customer, Long>
> {
>    ...
> }
>
>
> // Finally, create your *Spring Boot* application & run everything...
>
> @SpringBootApplication
> @ClientCacheApplication
> @EnableEntityDefinedRegions(basePackageClasses = Customer.class,
> clientRegionShortcut = ClientRegionShortcut.LOCAL)
> @EnableGemfireRepositories(basePackageClasses = CustomerRepository.class)
> @EnableIndexing
> @EnablePdx
> //@EnableClusterConfiguration(useHttp = true)
> public class SpringBootApacheGeodeClientApplication {
>
>    public static void main(String[] args) {
>       SpringApplication.run(SpringBootApacheGeodeClientApplication.class,
> args);
>    }
>
>    ...
> }
>
>
> I challenge anyone to find any boilerplate code in this example application
> (other than the basic, yet essential application/feature bootstrapping).
>
> No longer do you need boilerplate code to configure and create a
> *ClientCache*, *Pool*, *Regions*, *Indexes*, PDX, etc or to perform basic
> CRUD and simple (OQL) Queries.
>
> As am application developer, you can remain completely *focused* and
> *committed* to your application business requirements and logic, and let
> *SDG* worry about the plumbing.
>
> Because, I am "initially" using a ClientRegionShortcut.LOCAL, this "
> *ClientCache*" application runs properly, all by itself, without the need
> to start a server.  This is ideal when you are rapidly prototyping your
> application and want to iterate (DEV-TEST) quickly!
>
> However, it is a simple matter to also convert this application to use
> Apache Geode's client/server topology as well... simply remove the
> configuration for the clientRegionShortcut attribute in the
> @EnableEntityDefinedRegions annotation.
>
> By default, a client Region is set to PROXY and all Region ops will be sent
> to a server using the *ClientCache* "DEFAULT" *Pool*, which is configured
> to connect to a server running on localhost, listening on port 40404, by
> default.
>
> You can start 1 or more server(s) using *Gfsh* and optionally configure
> them either using *Gfsh* or SDG.  You choose!
>
> While it is likely that you will use *Gfsh* to script your configuration of
> the server(s) in the cluster, there is nothing that helps you on the
> client, other than SDG, of course!  Imagine if you have 100s of Regions to
> configure, and not only Regions, but Indexes, Disk Stores, and other schema
> objects as well.
>
> While it is appropriate (and even "*recommended*") to use *Gfsh* to script
> your final production configuration deployment, during your "building" and
> "testing' phases, personally, I prefer to use the new SDG
> @EnableClusterConfiguration(useHttp = true) annotation.  This annotation
> will push all *Entity-defined Region* configuration up to the server(s) in
> your cluster, from the client app.  Not only will it create corresponding
> server-side (PARTITION) Regions for all the client (PROXY) Regions, it will
> also create Indexes from your application domain object @Indexed fields on
> the server(s) as well.
>
> NOTE: You need a full installation of Apache Geode on the servers to use
> the
> @EnableClusterConfiguration feature.
>
> And, if that were not enough, the @EnableClusterConfiguration annotation
> performs the cluster server(s) modification in such a way that Apache
> Geode's Cluster Configuration service [10] will remember these changes.
> Therefore, if you had new nodes, those nodes will have a consistent
> configuration.  Additionally, if you bounce your entire cluster, or the
> cluster goes down, it will come back up with the same configuration when
> restarted.
>
> SDG is very careful not to stomp on your existing (sever/cluster)
> configuration, hopefully for obvious reasons.  If the Region already
> exists, SDG will not attempt to create it.
>
> I will be posting more examples like this over time so that everyone here
> will become familiar with the features and conveniences that SDG is adding.
>
> You find details on the complete example ( https://github.com/
> jxblum/simple-spring-geode-application) in *GitHub* [11].
>
> Happy coding!
>
> --
> -John
>
>
> [1] https://docs.spring.io/spring/docs/current/spring-framew
> ork-reference/integration.html#cache
> [2] http://geode.apache.org/docs/guide/12/developing/continu
> ous_querying/chapter_overview.html
> [3] https://github.com/jxblum/contacts-application/tree/mast
> er/continuous-query-example
> [4] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-regions
> [5] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-caching
> [6] https://docs.spring.io/spring/docs/current/spring-framew
> ork-reference/integration.html#cache-jsr-107
> [7] http://geode.apache.org/docs/guide/12/managing/region_co
> mpression/region_compression.html
> [8] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-region-compression
> [9] https://docs.spring.io/spring-data/geode/docs/2.0.2.RELE
> ASE/changelog.txt
> [10] http://geode.apache.org/docs/guide/12/configuring/clust
> er_config/gfsh_persist.html
> [11] https://github.com/jxblum/simple-spring-geode-application
>



-- 
Kindest Regards
-----------------------------
*Udo Kohlmeyer* | *Pivotal*
ukohlmeyer@pivotal.io
<http://www.gopivotal.com/>
www.pivotal.io

Re: [ANNOUNCE] Spring Data Geode 2.0.2.RELEASE (Kay SR2) Available!

Posted by Udo Kohlmeyer <uk...@pivotal.io>.
Another great release from the Spring world!!

--Udo

On Mon, Nov 27, 2017 at 11:39 PM, John Blum <jb...@pivotal.io> wrote:

> Greetings Apache Geode Community-
>
> It is my pleasure to announce the availability of *Spring Data* *Kay
> SR2* (*Service
> Release* 2) which includes *Spring Data Geode* *2.0.2.RELEASE*.  The
> official release announcement is here...
>
> https://spring.io/blog/2017/11/27/spring-data-ingalls-sr9-an
> d-kay-sr2-released
>
> Unfortunately, we missed the announce for the first service release of
> *Kay*,
> which occurred back on October 27th; my apologies.
>
> So, in both *Kay SR1 + SR2*, you will find the follow improvements...
>
>
> * Better, more reliable integration between *Spring's Cache Abstraction*
> [1]
> and *Spring* container initialization (particularly in the context of
> proxies) with Geode CQ [2].  I have even have a complete example here [3]
> (README in-progress).
>
> * In both *Entity-defined* as well as *Caching-defined* *Regions*, I have
> enabled the ability to configure the ClientRegionShortcut for client-side
> generated Regions and RegionShortcut for server-side generated Regions.
> You can learn more about *Entity-defined Regions* [4] and *Caching-defined
> Regions* [5] by following the links.
>
> * In addition to *Spring's Caching Annotations* [6] I have also added
> support for JSR-107 *JCache* API Annotations in SDG's *Caching-defined
> Regions*.  That means, if you used any of the JSR-107 annotations in your
> application service components and declared the SDG
> @EnableCachingDefinedRegions annotation on your *Spring Boot*
> @Configuration
> class, then you can define cache client Regions from the "caches"
> identified in your use of JSR-107 annotations.
>
> * I added Annotation support for configuring Apache Geode Region
> Compression [7] using the @EnableCompression annotation; see docs [8] for
> more details.  By default, it just enables the Google Snappy Compressor,
> provided by Apache Geode OOTB.
>
>
> Several other little enhancements were made and help to improve the overall
> development experience when using Apache Geode, especially in a *Spring*
> context.  See the *changelog* [9] for a complete list of changes in *Kay
> SR1 + SR2*.
>
>
> Finally, I leave you with a...
>
>
> *SPRING-GEODE TIP:*
>
> Let's say you want to create a simple *Spring Boot*, ClientCache
> application to store and manage customer data.  It is as simple as this...
>
>
> // Define Customer...
>
> @Region("Customers")
> public class Customer {
>
>    private Long id;
>
>    @Indexed(from = "/Customers")
>    private String name;
>
>    ...
> }
>
>
> // Define a Repository to persist and query Customers
>
> public interface CustomerRepository extends CrudRepository<Customer, Long>
> {
>    ...
> }
>
>
> // Finally, create your *Spring Boot* application & run everything...
>
> @SpringBootApplication
> @ClientCacheApplication
> @EnableEntityDefinedRegions(basePackageClasses = Customer.class,
> clientRegionShortcut = ClientRegionShortcut.LOCAL)
> @EnableGemfireRepositories(basePackageClasses = CustomerRepository.class)
> @EnableIndexing
> @EnablePdx
> //@EnableClusterConfiguration(useHttp = true)
> public class SpringBootApacheGeodeClientApplication {
>
>    public static void main(String[] args) {
>       SpringApplication.run(SpringBootApacheGeodeClientApplication.class,
> args);
>    }
>
>    ...
> }
>
>
> I challenge anyone to find any boilerplate code in this example application
> (other than the basic, yet essential application/feature bootstrapping).
>
> No longer do you need boilerplate code to configure and create a
> *ClientCache*, *Pool*, *Regions*, *Indexes*, PDX, etc or to perform basic
> CRUD and simple (OQL) Queries.
>
> As am application developer, you can remain completely *focused* and
> *committed* to your application business requirements and logic, and let
> *SDG* worry about the plumbing.
>
> Because, I am "initially" using a ClientRegionShortcut.LOCAL, this "
> *ClientCache*" application runs properly, all by itself, without the need
> to start a server.  This is ideal when you are rapidly prototyping your
> application and want to iterate (DEV-TEST) quickly!
>
> However, it is a simple matter to also convert this application to use
> Apache Geode's client/server topology as well... simply remove the
> configuration for the clientRegionShortcut attribute in the
> @EnableEntityDefinedRegions annotation.
>
> By default, a client Region is set to PROXY and all Region ops will be sent
> to a server using the *ClientCache* "DEFAULT" *Pool*, which is configured
> to connect to a server running on localhost, listening on port 40404, by
> default.
>
> You can start 1 or more server(s) using *Gfsh* and optionally configure
> them either using *Gfsh* or SDG.  You choose!
>
> While it is likely that you will use *Gfsh* to script your configuration of
> the server(s) in the cluster, there is nothing that helps you on the
> client, other than SDG, of course!  Imagine if you have 100s of Regions to
> configure, and not only Regions, but Indexes, Disk Stores, and other schema
> objects as well.
>
> While it is appropriate (and even "*recommended*") to use *Gfsh* to script
> your final production configuration deployment, during your "building" and
> "testing' phases, personally, I prefer to use the new SDG
> @EnableClusterConfiguration(useHttp = true) annotation.  This annotation
> will push all *Entity-defined Region* configuration up to the server(s) in
> your cluster, from the client app.  Not only will it create corresponding
> server-side (PARTITION) Regions for all the client (PROXY) Regions, it will
> also create Indexes from your application domain object @Indexed fields on
> the server(s) as well.
>
> NOTE: You need a full installation of Apache Geode on the servers to use
> the
> @EnableClusterConfiguration feature.
>
> And, if that were not enough, the @EnableClusterConfiguration annotation
> performs the cluster server(s) modification in such a way that Apache
> Geode's Cluster Configuration service [10] will remember these changes.
> Therefore, if you had new nodes, those nodes will have a consistent
> configuration.  Additionally, if you bounce your entire cluster, or the
> cluster goes down, it will come back up with the same configuration when
> restarted.
>
> SDG is very careful not to stomp on your existing (sever/cluster)
> configuration, hopefully for obvious reasons.  If the Region already
> exists, SDG will not attempt to create it.
>
> I will be posting more examples like this over time so that everyone here
> will become familiar with the features and conveniences that SDG is adding.
>
> You find details on the complete example ( https://github.com/
> jxblum/simple-spring-geode-application) in *GitHub* [11].
>
> Happy coding!
>
> --
> -John
>
>
> [1] https://docs.spring.io/spring/docs/current/spring-framew
> ork-reference/integration.html#cache
> [2] http://geode.apache.org/docs/guide/12/developing/continu
> ous_querying/chapter_overview.html
> [3] https://github.com/jxblum/contacts-application/tree/mast
> er/continuous-query-example
> [4] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-regions
> [5] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-caching
> [6] https://docs.spring.io/spring/docs/current/spring-framew
> ork-reference/integration.html#cache-jsr-107
> [7] http://geode.apache.org/docs/guide/12/managing/region_co
> mpression/region_compression.html
> [8] https://docs.spring.io/spring-data/geode/docs/current/re
> ference/html/#bootstrap-annotation-config-region-compression
> [9] https://docs.spring.io/spring-data/geode/docs/2.0.2.RELE
> ASE/changelog.txt
> [10] http://geode.apache.org/docs/guide/12/configuring/clust
> er_config/gfsh_persist.html
> [11] https://github.com/jxblum/simple-spring-geode-application
>



-- 
Kindest Regards
-----------------------------
*Udo Kohlmeyer* | *Pivotal*
ukohlmeyer@pivotal.io
<http://www.gopivotal.com/>
www.pivotal.io