Getting started

Stable releases

Simply put ravendb dependency to your pom:

<dependency>
  <groupId>net.ravendb</groupId>
  <artifactId>ravendb-client</artifactId>
  <version>3.2.1</version>
</dependency>

Create new maven project

Sample pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>ravendb-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>net.ravendb</groupId>
      <artifactId>ravendb-client</artifactId>
      <version>3.2.0</version>
    </dependency>
  </dependencies>

  <build>
	  <plugins>
		<plugin>
		  <groupId>com.mysema.maven</groupId>
		  <artifactId>apt-maven-plugin</artifactId>
		  <version>1.1.1</version>
		  <executions>
			<execution>
			  <goals>
				<goal>process</goal>
			  </goals>
			  <configuration>
				<outputDirectory>target/generated-sources/java</outputDirectory>
				<processor>net.ravendb.querydsl.RavenDBAnnotationProcessor</processor>
				<options>
				  <querydsl.entityAccessors>true</querydsl.entityAccessors>
				</options>
			  </configuration>
			</execution>
		  </executions>
		</plugin>
	</plugins>
  </build>
</project>

Please note that plugins section contains net.ravendb.querydsl.RavenDBAnnotationProcessor. As Java does not have LINQ, all definitions of indexes/transformers must be created using strings. Alternatively, you can use the Studio to create indexes/transformers, yet you can also use QueryDSL for strongly-typed querying. In order to use QueryDSL you have to mark your entities with @QueryEntity annotation and enable code generation in pom.xml.

@QueryEntity
public class Category {
  private String id;
  private String name;
  private String description;
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
}

After doing this you can use strongly-typed syntax.

QCategory c = QCategory.category;
    List<Category> candies = session
      .query(Category.class)
      .where(c.name.eq("Candy"))
      .toList();

Unstable releases

RavenDB Client Unstable is available as snapshot in daily-builds S3 maven repository.

Important

Embedding repositories in pom is not a good practice, although it allows a quick start. Please consider moving repositories into ~/.m2/settings.xml. More information can be found here.

<repositories>
    <repository>
        <id>snapshots-repo</id>
        <url>http://ravendb-maven.s3.amazonaws.com/snapshots/</url>
        <releases>
           <enabled>false</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
     </repository>
  </repositories>