知识点

软件工具

相关文章

更多

最近更新

更多

Mongodb与spring集成(2)------实体映射

2019-03-11 20:16|来源: 网络

 

spring-data-mongodb中的实体映射是通过

MongoMappingConverter这个类实现的。它可以通过注释把

java类转换为mongodb的文档。
它有以下几种注释:
@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。

@Document - 把一个java类声明为mongodb的文档,可以通

过collection参数指定这个类对应的文档。

@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。

@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。

@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。

@GeoSpatialIndexed - 声明该字段为地理信息的索引。

@Transient - 映射忽略的字段,该字段不会保存到

mongodb。

@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。

以下引用一个官方文档的例子:

Person类

@Document(collection="person")
@CompoundIndexes({
    @CompoundIndex(name = "age_idx", def = "{'lastName': 1, 'age': -1}")
})
public class Person<T extends Address> {

  @Id
  private String id;
  @Indexed(unique = true)
  private Integer ssn;
  private String firstName;
  @Indexed
  private String lastName;
  private Integer age;
  @Transient
  private Integer accountTotal;
  @DBRef
  private List<Account> accounts;
  private T address;

  
  public Person(Integer ssn) {
    this.ssn = ssn;
  }
  
  @PersistenceConstructor
  public Person(Integer ssn, String firstName, String lastName, Integer age, T address) {
    this.ssn = ssn;
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.address = address;
  }

Account类

@Document
public class Account {

  @Id
  private ObjectId id;
  private Float total;

}



 


转自:http://blog.csdn.net/laigood/article/details/7055824

相关问答

更多
  • mongodb struts spring集成使用方法: 1、 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 2、定义mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 3、 mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 4、 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映 ...
  • IbatisAdmPacVoucherDAO继承了BaseDAO类,对于继承来的属性,这里用parent="sqlMapClientDAO" 来获得。 我们找到sqlMapClientDAO的声明如下:
  • mongodb struts spring集成使用方法: 1、 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口
  • hibernate新出了好像是叫hibernate-ogm 吧,不知道有没有正式发布。它支持nosql数据库。 或者你可以使用spring-data-mongodb,这是 spring出的,目前应该的比较多。
  • hibernate新出了好像是叫hibernate-ogm 吧,不知道有没有正式发布。它支持nosql数据库。 或者你可以使用spring-data-mongodb,这是spring出的,目前应该的比较多。这些我都是在慕课网学到的。
  • spring
  • Spring Data MongoOperations.group()方法映射到db.collection.group() MongoDB命令,而不是$group聚合函数。 目前在Spring Data MongoDB中不支持聚合框架。 正如你所提到的,映射减少虽然受到支持 The Spring Data MongoOperations.group() method is mapped to db.collection.group() MongoDB command and not the $group a ...
  • 我认为你可以通过这种映射实现它(如果我理解你的问题): class Person { String name; int age; } class Outer { @Field("columns") List persons; } I think you can achieve it through this mapping (If I understood your question correctly): class Person { Strin ...
  • 答案在文档http://docs.spring.io/spring-data/data-mongo/docs/1.7.0.M1/reference/html/ MongoDB要求您对所有文档都有一个“_id”字段。 如果你没有提供一个驱动程序将分配一个ObjectId与一个生成的值。 当使用MongoMappingConverter时,有一些规则来控制Java类中的属性如何映射到这个'_id'字段。 以下概述哪些属性将映射到'_id'文档字段: 用@Id(org.springframework.data.a ...