building the longevity context
Once we have your domain model in place, we are ready to build our
LongevityContext, which we do in
import longevity.context.LongevityContext import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future import simbl.domain.SimblDomainModel val longevityContext = LongevityContext[Future, SimblDomainModel]()
You can configure the longevity context with one of any number of effects. In this guide, we choose to use Scala futures. For other options, see the section on effects in the user manual.
The longevity context provides a variety of tools that are tailored to your model. The most
important of these is the
Repo, which you can use to do standard CRUD operations
(create/retrieve/update/delete) with your persistent objects, as well as executing queries that
return more than one result.
Longevity uses Typesafe
Config to configure the
longevity context. Typically, the configuration is drawn from the
application.conf resource file. The longevity configuration for
Simple Blogging looks this:
longevity.backEnd = InMem longevity.autoOpenConnection = true longevity.autoCreateSchema = true longevity.optimisticLocking = false longevity.writeTimestamps = false longevity.cassandra.autoCreateKeyspace = true longevity.cassandra.address = "127.0.0.1" longevity.cassandra.useCredentials = no longevity.cassandra.username = nil longevity.cassandra.password = nil longevity.cassandra.keyspace = simbl_main longevity.cassandra.replicationFactor = 1 longevity.mongodb.uri = "mongodb://127.0.0.1:27017" longevity.mongodb.db = simbl_main longevity.jdbc.url = "jdbc:sqlite:simbl_main.db" longevity.test.cassandra.autoCreateKeyspace = true longevity.test.cassandra.address = "127.0.0.1" longevity.test.cassandra.useCredentials = no longevity.test.cassandra.username = nil longevity.test.cassandra.password = nil longevity.test.cassandra.keyspace = simbl_test longevity.test.cassandra.replicationFactor = 1 longevity.test.mongodb.uri = "mongodb://127.0.0.1:27017" longevity.test.mongodb.db = simbl_test longevity.test.jdbc.url = "jdbc:sqlite:simbl_test.db"
Here, you need to specify the back end in configuration property
longevity.backEnd. Your choices are currently
SQLite. We use
InMem out of the box. If you want to
try Cassandra or MongoDB, you will need to set up a database system to
connect to. The SQLite back end will work without any extra setup, as
all you need to run SQLite is the right jar on your classpath.
You can find configurations for main and test databases for the various back ends in the config file. If you want to experiment with adjusting the persistence strategy to use a real database, you may need to adjust this configuration.