use*_*762 8 spring-data-mongodb
Mongodb是一个无架构的文档数据库,但在spring数据中,有必要定义实体类和存储库类,如下所示:
实体类:
@Document(collection = "users")
public class User implements UserDetails {
@Id private String userId;
@NotNull @Indexed(unique = true) private String username;
@NotNull private String password;
@NotNull private String name;
@NotNull private String email;
}
Run Code Online (Sandbox Code Playgroud)
存储库类:
public interface UserRepository extends MongoRepository<User, String> {
User findByUsername(String username);
}
Run Code Online (Sandbox Code Playgroud)
无论如何在spring数据mongodb中使用map not class,以便服务器可以接受任何动态JSON数据,然后将其存储在BSON中而不需要任何预先定义的类?
Mar*_*rin 10
首先,关于无模式数据的一些有见地的链接:
第二......人们可能想知道Spring或Java是否是解决问题的正确方法 - 为什么不是一个更动态的工具,如Ruby,Python或Mongoshell?
话虽如此,让我们关注技术问题.
如果你的目标只是存储随机数据,你基本上只需要定义自己的控制器并直接使用MongoDB Java驱动程序.
如果您真的坚持没有为您的域对象类预定义的架构,您可以使用如下内容:
@Document(collection = "users")
public class User implements UserDetails {
@Id
private String id;
private Object data;
// getters/setters omitted
}
Run Code Online (Sandbox Code Playgroud)
数据也可以定义为Map,com.mongodb.DBObject,com.mongodb.BasicDBObject或com.mongodb.BasicDBList.
基本上,它可以让你在其中的字段,你可以把任何你想要的,但要注意的序列化/反序列化的问题(如果你的嵌套文档中了的ObjectID和这DBREFS可能成为棘手).此外,如果您的数据层次结构变得过于复杂,更新数据可能会变得很糟糕.
不过,在某些时候,您会发现您的数据确实具有可以精确定位并存入定义明确的POJO的模式.
| 归档时间: |
|
| 查看次数: |
5499 次 |
| 最近记录: |