morphia
Extends the mongodb module with object-document mapping via Morphia.
exports
dependency
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-morphia</artifactId>
<version>1.6.6</version>
</dependency>
getting started
Before you start make sure to read the doc from mongodb module. This module extends mongodb module.
usage
application.conf:
db = "mongodb://localhost/mydb"
{
use(new Monphia());
get("/", req -> {
Datastore ds = require(Datastore.class);
// work with mydb datastore
});
}
options
morphia callback
The Morphia callback let you map classes and/or set mapper options.
{
use(new Monphia()
.doWith((morphia, config) -> {
// work with morphia
morphia.map(MyObject.class);
})
);
}
For more detailed information, check here
datastore callback
The Datastore callback is executed only once, it’s perfect for checking indexes:
{
use(new Monphia()
.doWith(datastore -> {
// work with datastore
datastore.ensureIndexes();
datastore.ensureCap();
})
);
}
For more detailed information, check here
auto-incremental ID
This modules comes with auto-incremental ID generation, usage:
{
use(new Monphia().with(IdGen.GLOBAL); // or IdGen.LOCAL
}
ID must be of type: Long
and annotated with GeneratedValue:
@Entity
public class MyEntity {
@Id @GeneratedValue Long id;
}
There two ID gen:
- GLOBAL: generates a global and unique ID regardless of entity type
- LOCAL: generates an unique ID per entity type
entity listeners
Guice will create and inject entity listeners (when need it).
public class MyListener {
private Service service;
@Inject
public MyListener(Service service) {
this.service = service;
}
@PreLoad void preLoad(MyObject object) {
service.doSomething(object);
}
}
NOTE: ONLY Constructor injection is supported.
That’s all folks! Enjoy it!!