/
Tutorial.java
65 lines (54 loc) · 2.42 KB
/
Tutorial.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package de.bild.backend.polymorphia.tutorial;
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import de.bild.backend.polymorphia.tutorial.model.AnEnum;
import de.bild.backend.polymorphia.tutorial.model.Pojo;
import de.bild.backend.polymorphia.tutorial.model.PolymorphicPojo;
import de.bild.backend.polymorphia.tutorial.model.SubPojo;
import de.bild.codec.PojoCodecProvider;
import org.bson.codecs.configuration.CodecRegistries;
import org.bson.codecs.configuration.CodecRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
public class Tutorial {
private static final Logger LOGGER = LoggerFactory.getLogger(Tutorial.class);
/**
*
* @return a CodecRegistry build from the model package and the DefaultCodecRegistry from the mongo driver
*/
public static CodecRegistry getCodecRegistry() {
return CodecRegistries.fromRegistries(
CodecRegistries.fromProviders(
PojoCodecProvider.builder()
.register(Pojo.class.getPackage().getName())
.build()
),
MongoClientSettings.getDefaultCodecRegistry());
}
public static void main(String[] args) {
MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("mongodb://localhost:27017"))
.codecRegistry(getCodecRegistry())
.build();
MongoClient mongoClient = MongoClients.create(mongoClientSettings);
MongoDatabase database = mongoClient.getDatabase("tutorial");
MongoCollection<PolymorphicPojo> collection = database.getCollection("entities").withDocumentClass(PolymorphicPojo.class);
// create some pojo
Pojo pojo = new Pojo();
pojo.setName("A nice name");
pojo.setPojos(Arrays.asList(new SubPojo(42), new SubPojo(48)));
pojo.setAnEnum(AnEnum.B);
// insert into db
collection.insertOne(pojo);
// read from db
PolymorphicPojo foundPojo = collection.find(Filters.eq("_id", pojo.getId())).first();
// output
LOGGER.debug("Found pojo {}", foundPojo);
}
}