我想将Java POJO映射到MongoDB并实现CRUD操作。我遵循手册https://mongodb.github.io/mongo-java-driver/3.11/driver/getting-started/quick-start-pojo/,看起来一切正常,但一个Person属性取决于MongoDB:
public final class Person {
private ObjectId id;
private String name;
private int age;
private Address address;}
这是 org.bson.types.ObjectId ID。这使我的域层依赖于MongoDB,而这实际上是我根本不称为POJO的东西。 我希望使用String或其他Java核心类(例如Long或类似的东西)代替ObjectId。它也可能是一种吸气剂/吸气剂。我该如何实现?
我试图从“人”中删除ID
package com.mongo_demo.domain;
public final class Person {
private String name;
private int age;
private Address address;}
并将其用作我的域对象,而在DAO中使用MongoDB进行操作时,我将使用子类:
package com.mongo_demo.mongo_domain;
public final class Person extends com.mongo_demo.domain.Person {
private ObjectId id;
}
很明显,我的域类现在不依赖MongoDB,但仍然缺少String id,也没有办法使用getter方法,因为ObjectId id属性位于子类中。
我不确定在服务代码中不能访问id值是否合适,因为我可能需要通过id操作调用delete,否则,除了ObjectId id属性之外,我还必须创建自己的对象唯一标识符,这将是自然键,并因此带来缺点。
PS没有显示吸气剂设置方法,因为我改用Lombok @Data批注。