trait KVStore extends Closeable
Abstraction for a local key/value store for storing app data.
There are two main features provided by the implementations of this interface:
Serialization
If the underlying data store requires serialization, data will be serialized to and deserialized
using a KVStoreSerializer, which can be customized by the application. The serializer is
based on Jackson, so it supports all the Jackson annotations for controlling the serialization of
app-defined types.
Data is also automatically compressed to save disk space.
Automatic Key Management
When using the built-in key management, the implementation will automatically create unique keys for each type written to the store. Keys are based on the type name, and always start with the "+" prefix character (so that it's easy to use both manual and automatic key management APIs without conflicts).
Another feature of automatic key management is indexing; by annotating fields or methods of
objects written to the store with KVIndex, indices are created to sort the data
by the values of those properties. This makes it possible to provide sorting without having
to load all instances of those types from the store.
KVStore instances are thread-safe for both reads and writes.
- Annotations
- @Private()
- Alphabetic
- By Inheritance
- KVStore
- Closeable
- AutoCloseable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def close(): Unit
- Definition Classes
- Closeable → AutoCloseable
- Annotations
- @throws(classOf[java.io.IOException])
- abstract def count(type: Class[_ <: AnyRef], index: String, indexedValue: AnyRef): Long
Returns the number of items of the given type which match the given indexed value.
- abstract def count(type: Class[_ <: AnyRef]): Long
Returns the number of items of the given type currently in the store.
- abstract def delete(type: Class[_ <: AnyRef], naturalKey: AnyRef): Unit
Removes an object and all data related to it, like index entries, from the store.
Removes an object and all data related to it, like index entries, from the store.
- type
The object's type.
- naturalKey
The object's "natural key", which uniquely identifies it. Null keys are not allowed.
- Exceptions thrown
java.util.NoSuchElementExceptionIf an element with the given key does not exist.
- abstract def getMetadata[T](klass: Class[T]): T
Returns app-specific metadata from the store, or null if it's not currently set.
Returns app-specific metadata from the store, or null if it's not currently set.
The metadata type is application-specific. This is a convenience method so that applications don't need to define their own keys for this information.
- abstract def read[T](klass: Class[T], naturalKey: AnyRef): T
Read a specific instance of an object.
Read a specific instance of an object.
- naturalKey
The object's "natural key", which uniquely identifies it. Null keys are not allowed.
- Exceptions thrown
java.util.NoSuchElementExceptionIf an element with the given key does not exist.
- abstract def removeAllByIndexValues[T](klass: Class[T], index: String, indexValues: Collection[_ <: AnyRef]): Boolean
A cheaper way to remove multiple items from the KVStore
- abstract def setMetadata(value: AnyRef): Unit
Writes the given value in the store metadata key.
- abstract def view[T](type: Class[T]): KVStoreView[T]
Returns a configurable view for iterating over entities of the given type.
- abstract def write(value: AnyRef): Unit
Writes the given object to the store, including indexed fields.
Writes the given object to the store, including indexed fields. Indices are updated based on the annotated fields of the object's class.
Writes may be slower when the object already exists in the store, since it will involve updating existing indices.
- value
The object to write.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()