diff --git a/src/docbkx/introduction/requirements.xml b/src/docbkx/introduction/requirements.xml
index 79e2cee47..ccbfad8ba 100644
--- a/src/docbkx/introduction/requirements.xml
+++ b/src/docbkx/introduction/requirements.xml
@@ -7,6 +7,6 @@
3.2.x and above.
- Currently we support Cassandra 1.X using the DataStax Java Driver (1.0.6-dse)
+ Currently we support Cassandra 2.X using the DataStax Java Driver (2.0.X)
\ No newline at end of file
diff --git a/src/docbkx/reference/cassandra.xml b/src/docbkx/reference/cassandra.xml
index e6fcc2a9e..54b1b01e5 100644
--- a/src/docbkx/reference/cassandra.xml
+++ b/src/docbkx/reference/cassandra.xml
@@ -1,77 +1,69 @@
-
-
-
- Cassandra support
-
- The Cassandra support contains a wide range of features which are summarized below.
-
-
-
- Spring configuration support using Java based @Configuration classes or an XML namespace
- for a Cassandra driver instance and replica sets
-
-
-
- CassandraTemplate helper class that increases productivity performing common Cassandra
- operations. Includes integrated object mapping between CQL Tables and POJOs.
-
-
-
- Exception translation into Spring's portable Data Access Exception
- hierarchy
-
-
-
- Feature Rich Object Mapping integrated with Spring's Conversion
- Service
-
-
-
- Annotation based mapping metadata but extensible to support other
- metadata formats
-
-
-
- Persistence and mapping lifecycle events
-
-
-
- Java based Query, Criteria, and Update DSLs
-
-
-
- Automatic implementation of Repository interfaces including
- support for custom finder methods.
-
-
-
- For most tasks you will find yourself using CassandraTemplate or the
- Repository support that both leverage the rich mapping functionality. CassandraTemplate is the
- place to look for accessing functionality such as incrementing counters or ad-hoc CRUD
- operations. CassandraTemplate also provides callback methods so that it is easy for you to get a
- hold of the low level API artifacts such as com.datastax.driver.core.Session
- to communicate directly with Cassandra. The goal with naming conventions on various API
- artifacts is to copy those in the base DataStax Java driver so you can easily map your existing
- knowledge onto the Spring APIs.
-
-
- Getting Started
-
- Spring Cassandra support requires Cassanra 1.1 or higher (but not Cassandra 2.0) and Java
- SE 6 or higher. The latest commerical release (1.2.X as of this writing) is recommended. An
- easy way to bootstrap setting up a working environment is to create a Spring based project in
- STS.
-
- First you need to set up a running Cassandra server.
-
- To create a Spring project in STS go to File -> New -> Spring Template Project ->
- Simple Spring Utility Project -> press Yes when prompted. Then enter a project and a
- package name such as org.spring.cassandra.example.
-
- Then add the following to pom.xml dependencies section.
-
- <dependencies>
+
+
+
+ Cassandra support
+ The Cassandra support contains a wide range of features which
+ are summarized below.
+
+
+ Spring configuration support using Java based @Configuration
+ classes or an XML namespace for a Cassandra driver instance and
+ replica sets
+
+
+ CassandraTemplate helper class that increases productivity
+ performing common Cassandra operations. Includes integrated object
+ mapping between CQL Tables and POJOs.
+
+
+ Exception translation into Spring's portable Data Access
+ Exception hierarchy
+
+
+ Feature Rich Object Mapping integrated with Spring's
+ Conversion Service
+
+
+ Annotation based mapping metadata but extensible to support
+ other metadata formats
+
+
+ Persistence and mapping lifecycle events
+
+
+ Java based Query, Criteria, and Update DSLs
+
+
+ Automatic implementation of Repository interfaces including
+ support for custom finder methods.
+
+
+ For most tasks you will find yourself using
+ CassandraTemplate or the Repository support that both
+ leverage the rich mapping functionality. CassandraTemplate is the
+ place to look for accessing functionality such as incrementing
+ counters or ad-hoc CRUD operations. CassandraTemplate also provides
+ callback methods so that it is easy for you to get a hold of the low
+ level API artifacts such as
+ com.datastax.driver.core.Session to communicate directly
+ with Cassandra. The goal with naming conventions on various API
+ artifacts is to copy those in the base DataStax Java driver so you can
+ easily map your existing knowledge onto the Spring APIs.
+
+ Getting Started
+ Spring Data Cassandra uses the DataStax Java Driver version
+ 2.X, which supports DataStax Enterprise 4/Cassandra 2.0, and Java SE
+ 6 or higher. The latest commercial release (2.X as of this writing)
+ is recommended. An easy way to bootstrap setting up a working
+ environment is to create a Spring based project in
+ STS.
+ First you need to set up a running Cassandra server.
+ To create a Spring project in STS go to File -> New ->
+ Spring Template Project -> Simple Spring Utility Project ->
+ press Yes when prompted. Then enter a project and a package name such
+ as org.spring.cassandra.example.
+ Then add the following to pom.xml dependencies section.
+ <dependencies>
<!-- other dependency elements omitted -->
@@ -81,165 +73,250 @@
<version>1.0.0.RELEASE</version>
</dependency>
-</dependencies>
-
- Also change the version of Spring in the pom.xml to be
-
- <spring.framework.version>3.2.8.RELEASE</spring.framework.version>
-
- You will also need to add the location of the Spring Milestone
- repository for maven to your pom.xml which is at the same level of your
- <dependencies/> element
-
- <repositories>
+</dependencies>
+ Also change the version of Spring in the pom.xml to be
+ <spring.framework.version>3.2.8.RELEASE</spring.framework.version>
+ You will also need to add the location of the Spring Milestone
+ repository for maven to your pom.xml which is at the same level of
+ your <dependencies/> element
+ <repositories>
<repository>
<id>spring-milestone</id>
<name>Spring Maven MILESTONE Repository</name>
<url>http://repo.spring.io/libs-milestone</url>
</repository>
-</repositories>
-
- The repository is also browseable
- here.
- TODO
-
-
-
- Examples Repository
-
- TODO
-
-
-
- Connecting to Cassandra with Spring
-
-
-
- General auditing configuration
- Auditing support is not available in the current version.
-
-
-
- Introduction to CassandraTemplate
-
-
- Instantiating CassandraTemplate
-
-
-
-
- Saving, Updating, and Removing Rows
-
- CassandraTemplate provides a simple way for you to save, update,
- and delete your domain objects and map those objects to documents stored in Cassandra.
-
-
- How the Composite Primary Key fields are handled in the mapping layer
-
- Cassandra requires that you have at least 1 Partition Key field for a CQL Table.
- Alternately, you can have one or more Clustering Key fields.
- TODO With Examples
-
-
-
-
-
- Methods for saving and inserting rows
-
-
-
- Updating rows in a CQL table
-
-
-
- Upserting rows in a CQL table
-
-
-
- Finding and Upserting rowa in a CQL table
-
-
-
- Methods for removing rows
-
-
-
-
-
-
- Overriding default mapping with custom converters
-
- In order to have more fine grained control over the mapping process you can register
- Spring converters with the CassandraConverter implementations such as
- the MappingCassandraConverter.
-
- The MappingCassandraConverter checks to see if there are any Spring
- converters that can handle a specific class before attempting to map the object itself. To
- 'hijack' the normal mapping strategies of the
- MappingCassandraConverter, perhaps for increased performance or other
- custom mapping needs, you first need to create an implementation of the Spring
- Converter interface and then register it with the
- MappingConverter.
-
-
- For more information on the Spring type conversion service see the
- reference docs here.
-
-
-
- Saving using a registered Spring Converter
-
-
-
- Reading using a Spring Converter
-
-
-
- Registering Spring Converters with the CassandraConverter
-
-
-
- Converter disambiguation
-
-
-
-
- Executing Commands
-
-
- Methods for executing commands
-
-
-
-
-
-
- Exception Translation
-
- The Spring framework provides exception translation for a wide variety of database and
- mapping technologies. This has traditionally been for JDBC and JPA. The Spring support for
- Cassandra extends this feature to the Cassandra Database by providing an implementation of the
- org.springframework.dao.support.PersistenceExceptionTranslator
- interface.
-
- The motivation behind mapping to Spring's consistent data access exception hierarchy is that you are then able to write
- portable and descriptive exception handling code without resorting to coding against Cassandra
- Exceptions. All of Spring's data access exceptions are inherited from the root
- DataAccessException class so you can be sure that you will be able to
- catch all database related exception within a single try-catch block.
-
-
-
-
+</repositories>
+ The repository is also
+
+ browseable here.
+ Create a simple Employee class to persist.
+
+ package org.spring.cassandra.example;
+
+import org.springframework.data.cassandra.mapping.PrimaryKey;
+import org.springframework.data.cassandra.mapping.Table;
+
+@Table
+public class Person {
+
+ @PrimaryKey
+ private String id;
+
+ private String name;
+ private int age;
+
+ public Person(String id, String name, int age) {
+ this.id = id;
+ this.name = name;
+ this.age = age;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
+ }
+
+}
+
+ And a main application to run
+
+ package org.spring.cassandra.example;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.cassandra.core.CassandraOperations;
+import org.springframework.data.cassandra.core.CassandraTemplate;
+
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.Session;
+import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.datastax.driver.core.querybuilder.Select;
+
+public class CassandraApp {
+
+ private static final Logger LOG = LoggerFactory.getLogger(CassandraApp.class);
+
+ private static Cluster cluster;
+ private static Session session;
+
+ public static void main(String[] args) {
+
+ try {
+
+ cluster = Cluster.builder().addContactPoints(InetAddress.getLocalHost()).build();
+
+ session = cluster.connect("mykeyspace");
+
+ CassandraOperations cassandraOps = new CassandraTemplate(session);
+
+ cassandraOps.insert(new Person("1234567890", "David", 40));
+
+ Select s = QueryBuilder.select().from("person");
+ s.where(QueryBuilder.eq("id", "1234567890"));
+
+ LOG.info(cassandraOps.queryForObject(s, Person.class).getId());
+
+ cassandraOps.truncate("person");
+
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
+
+
+ Even in this simple example, there are a few things to
+ observe.
+
+
+ You can create an instance of CassandraTemplate with a
+ Cassandra Session, derived from the Cluster.
+
+
+ You must annotate your POJO as a Cassandra @Table, and also
+ annotate the @PrimaryKey. Optionally you can override these
+ mapping names to match your Cassandra database table and column
+ names.
+
+
+ You can use CQL String, or the DataStax QueryBuilder to
+ construct you queries.
+
+
+
+
+ Examples Repository
+ After the initial release of Spring Data Cassandra 1.0.0, we
+ will start working on a showcase repository with full examples.
+
+
+ Connecting to Cassandra with Spring
+
+
+ General auditing configuration
+ Auditing support is not available in the current version.
+
+
+ Introduction to CassandraTemplate
+
+ Instantiating CassandraTemplate
+
+
+
+ Saving, Updating, and Removing Rows
+ CassandraTemplate provides a simple way
+ for you to save, update, and delete your domain objects and map those
+ objects to documents stored in Cassandra.
+
+ How the Composite Primary Key fields are handled in the
+ mapping layer
+ Cassandra requires that you have at least 1 Partition Key
+ field for a CQL Table. Alternately, you can have one or more
+ Clustering Key fields.
+ TODO With Examples
+
+
+
+ Methods for saving and inserting rows
+
+
+ Updating rows in a CQL table
+
+
+ Upserting rows in a CQL table
+
+
+ Finding and Upserting rowa in a CQL table
+
+
+ Methods for removing rows
+
+
+
+
+ Overriding default mapping with custom converters
+ In order to have more fine grained control over the mapping
+ process you can register Spring converters with the
+ CassandraConverter implementations such as the
+ MappingCassandraConverter.
+ The MappingCassandraConverter checks to
+ see if there are any Spring converters that can handle a specific
+ class before attempting to map the object itself. To
+ 'hijack' the normal mapping strategies of the
+ MappingCassandraConverter, perhaps for increased
+ performance or other custom mapping needs, you first need to create
+ an implementation of the Spring
+ Converter interface and then register it with the
+ MappingConverter.
+
+ For more information on the Spring type conversion service see
+ the reference docs
+
+ here.
+
+
+ Saving using a registered Spring Converter
+
+
+ Reading using a Spring Converter
+
+
+ Registering Spring Converters with the
+ CassandraConverter
+
+
+ Converter disambiguation
+
+
+
+ Executing Commands
+
+ Methods for executing commands
+
+
+
+
+ Exception Translation
+ The Spring framework provides exception translation for a wide
+ variety of database and mapping technologies. This has traditionally
+ been for JDBC and JPA. The Spring support for Cassandra extends this
+ feature to the Cassandra Database by providing an implementation of
+ the
+ org.springframework.dao.support.PersistenceExceptionTranslator
+ interface.
+ The motivation behind mapping to Spring's
+
+ consistent data access exception hierarchy is that you are
+ then able to write portable and descriptive exception handling code
+ without resorting to coding against Cassandra Exceptions. All of
+ Spring's data access exceptions are inherited from the root
+ DataAccessException class so you can be sure
+ that you will be able to catch all database related exception within
+ a single try-catch block.
+
+
+