Mongodb與spring整合(2)——實體映射

來源:互聯網
上載者:User

 

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類

@Documentpublic class Account {  @Id  private ObjectId id;  private Float total;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.