`

mongodb注解详解

    博客分类:
  • java
阅读更多
1、@Entity
    如果你想通过Morphia把你的对象保存到Mongo中,你首先要做的是使用@Entity注解你的类:
@Entity(value="comm_user_favorite_count",noClassnameStored=true)在@Entity注解中提供了一个可选的参数用来标识是否在文档中保存类名。
2、@Entity实体类,name为collection的名称,noClassnameStored用来标识是否需要存储className字段来表示类名,为什么要使用他哪?保存类名的主要目的是,当你在同一个链接中保存不同的实体对象,但是你想
作为他们的基类或超类来读取。
如:
   @Entity("animals") abstract class Animal { String name; }
@Entity("animals") Cat extends Animal { ... }
@Entity("animals") Dog extends Animal { ... }
//And then performing the following query...
List<Animal> animals = ds.createQuery(Animal.class).asList();
正如你看到的,如果不在文档中保存类名,Morphia将不能正确的识别创建那个类。
如果你在一个链接中只保存唯一的实体类型并且你还关心你的数据库大小,在你的@Entity注解上加上noClassnameStored=true
参数将会是安全的。

3、mongoDB默认要持久所有对象 可以同@Transient //这个表示不持久来表示一个字段不持久。

4、@Id
被@Entity注解的类必须有一个唯一的 @Id值;这些值被保存在 MongoDB数据库的“id”属性中,这是一个必须的为索引。被@Id注解的ID是ObjectId类型的,这样,你就不用担心Id的生成问题了,Mongo会自动为你生成一
  个唯一的新的ObjectId对象(就行MySQL中的auto_increment类型的ID)。如果你想使用其他的类型作为ID,那么在你保存数据时就必须
  手动为ID赋值。
@Id private ObjectId id;

5、 @Indexed
此注解是为某个字段申请一个索引。 当datastore.ensureIndexes() 方法被调用时 这些索引就会被申请
参数说明如下:
   value: 表名这个索引的方向; IndexDirection.ASC(升序),IndexDirection.DESC(降序), IndexDirection.BOTH(两者)
             默认为 升序;[size=large][/size]
   name: 被创建的索引的 名称; mongodb默认创建的索引名的格式为(key1_1/-1_key2_1)
   unique: 创建一个唯一索引,当创建唯一索引后,当在此字段插入相同的值时将会报错。true:为唯一索引;false:不是唯一索引。
                 默认为:false
   dropDups:此参数表明,当为某个字段创建唯一索引时,删除其他相同值的记录。只保留第一条记录。true:删除重复,
                      false:不删除重复(当有重复值时唯一索引创建失败);默认为false.
注意:当在一个存在的系统上,创建已经存在的索引时,将不会花费任何事件(也不会做任何事情)。
        Morphia m = .....
        Datastore ds = ....
      m.map(Product.class);
      ds.ensureIndexes();  //为被@Indexed注解的所有字段创建索引。
@Indexes(@Index("userId,category"))根据用户ID,用户类型

6、@Embedded
你可以创建一个类被嵌套在实体类中,在这种情况下我们可以使用@Embedded注解。例如,在Hotel类中 可能会有一个Address。
     Address是Hotel不可分割的一部分,没有ID, 并且不会被存储在分开的collection中。在这种情况下我们可以使用@Embedded注解
   Address.
      @Entity
      public class Hotel{
        ...
        @Id
       private ObjectId id;
       @Embedded(“address”)
       private Address address;
       ...
      }
      @Embedded
    public  class Address{
        ...
     }
正如你所看到的,被@Embedded注解的类没有@Id。 这是因为他们经常被嵌套在其他类中。事实上,被@Embedded注解的类也不允许有@Id

7、@Reference
和@Embedded类似,但是被存储在分开的collection中
@Entity
public class BlogEntry {

    @Id
    private ObjectId id;

    private String title;
    private Date publishDate;
    private String body;

    @Reference(“blog _author”)
    private Author author;

    // getters and setters
}

...

@Entity(“author”)
public class Author {

    @Id
    private ObjectId id;

    private String username;
    private String fullName;
    private String emailAddress;

    // getters and setters
}

@Property
指定对应数据的名称如@Property("started")

@AlsoLoad
Load的时候可以从一个或多个域里取值,但要保证这多个域在同一个document里只出现一次 如 字段定义了  title字段 并注解了 @AlsoLoad({"xxx",”xxx1”}),则可以从数据库的title、xxx、xxx1里取值,但同一个document里只能存在 title、xxx、xxx1里的一个

@NotSaved
只会被load不会被save

@PrePersist – 在保存之前调用
@PostPersist – 保存之后调用
@PreLoad – 在映射成POJO前调用
@PostLoad – 在映射成POJO后调用

分享到:
评论

相关推荐

    springboot整合mongodb详解

    SpringBoot整合MongoDB详解 MongoDB是一款高性能、无模式的分布式文档型数据库,适用于处理大量数据的场景,尤其适合处理半结构化或非结构化的数据。SpringBoot是Spring框架的一个轻量级模块,旨在简化Spring应用的...

    Spring Boot使用MongoDB详解

    ### Spring Boot 使用 MongoDB 详解 #### 一、前言 随着大数据时代的发展,NoSQL 数据库因其灵活性和高性能成为开发者的新宠。MongoDB 作为 NoSQL 数据库中的佼佼者,凭借其面向文档的存储方式、高效查询性能及...

    liu1084#pages_on_everyday#2018-1-5-java-mongodb-spring-data-mong

    spring-data-mongodb注解详解@Document 将一个java类映射为mongodb的文档@Indexed 声明该字段需要索引,建立索引可以大

    Spring整合mongodb详解

    对于实体类,需要添加`@Document`注解来指定其对应的MongoDB集合名称: ```java @Document(collection = "users") public class User { @Id private String id; private String username; // getters & ...

    centos7.2安装Mongodb3.6.3

    为了让 MongoDB 支持远程访问,需要编辑配置文件 `mongod.conf` 并注释掉 `bindIp`。 **命令示例**: ```bash vim /etc/mongod.conf ``` 找到 `bindIp` 行,并将其注释掉或者修改为 `0.0.0.0`。 **命令示例**: ...

    PHP7之Mongodb API使用详解

    并确保旧的`mongo.so`扩展已被移除或注释掉,因为新的MongoDB PHP驱动不支持旧的`mongo` API。 4. **关于API的变化**: 自PHP7开始,旧的`mongo`扩展已被废弃,现在推荐使用`mongodb`扩展,它提供了对MongoDB...

    springboot-mongodb-mybatis-demo.zip

    - 创建MongoDB的实体类,使用@Document注解指定对应的集合。 - 创建Mybatis-Plus的Mapper接口,定义数据库操作方法。 - 在Springboot的配置文件application.yml或application.properties中配置Mybatis-Plus的相关...

    mongodb driver使用代码详解

    在测试环境中,可以使用JUnit框架的`@Before`和`@After`注解来初始化和关闭连接,确保每个测试方法都有独立的数据库连接。 总结来说,mongodb-driver为Java开发者提供了方便的API,用于连接、查询、插入、更新和...

    详解如何使用MongoDB+Springboot实现分布式ID的方法

    详解使用MongoDB+Springboot实现分布式ID的方法 在分布式系统中,生成唯一的ID是非常重要的,否则可能会导致数据混乱。MongoDB提供了一种轻量级的ObjectId机制,可以生成全局唯一的ID。Springboot是Java开发的热门...

    用MongoDB和Spring_Data创建Java应用

    #### Spring Data for MongoDB详解 Spring Data for MongoDB是Spring Data项目的一个分支,专为MongoDB设计,旨在降低开发人员使用MongoDB的门槛。通过Spring Data for MongoDB,开发者可以利用熟悉的Spring框架...

    Centos7 yum安装mongodb实现步骤详解

    8. 如果你想允许远程访问MongoDB,需要编辑`/etc/mongod.conf`文件,取消`bindIp`的注释或将其设置为0.0.0.0,然后重启MongoDB服务: ``` systemctl restart mongod.service ``` 注意:开启远程访问会增加安全...

    MongoDB安装及副本、集群搭建

    ### MongoDB安装及副本、集群搭建详解 #### 一、MongoDB基本安装流程 **1. 创建MongoDB用户及设置密码** - 在Linux系统中,首先需要为MongoDB创建一个专用的用户账户,并为其设置密码。 ```bash useradd ...

    dbunit-mongodb:mongodb 的 dbunit 模块

    **dbunit-mongodb 模块详解** 在 IT 领域,数据库测试是软件开发过程中不可或缺的一环。MongoDB 是一款流行的开源、分布式文档型数据库,而 DbUnit 是 Java 开发中的一个单元测试框架,主要用于数据库的数据填充和...

    mongodb java 调用例子

    ### MongoDB Java调用示例详解 #### 一、概述 本文档主要介绍如何在Java环境中使用MongoDB进行数据库操作的基本方法。通过一个简单的Java程序,我们将会了解到如何连接MongoDB服务器、创建数据库、插入文档、查询...

    Spring Boot 2.x基础教程:使用MongoDB(csdn)————程序.pdf

    Spring Boot 2.x 教程中的MongoDB使用详解 MongoDB是一个流行的NoSQL数据库系统,设计为分布式存储,提供高性能和可伸缩性。它的数据结构以BSON(Binary JSON)为主,允许存储复杂的数据类型,特别适合Node.js应用...

    MongoDB的Linux安装、基本操作、可视化、实验源码与报告文档.docx

    ### MongoDB在Linux上的安装与基本操作详解 #### 一、MongoDB在Linux上的安装 **1. 使用包管理工具或手动下载安装MongoDB** 在大多数Linux发行版上,您可以通过包管理工具轻松安装MongoDB。这里我们将分别介绍...

    mongodb 添加用户及权限设置详解

    接下来,为了使权限认证生效,你需要修改 MongoDB 的配置文件 `/etc/mongodb.conf`,取消 `auth=true` 行的注释,并重启服务: ```bash vim /etc/mongodb.conf /etc/init.d/mongod restart ``` 一旦权限认证开启,...

    spring boot &amp; mongoDB后台系统.zip

    《Spring Boot与MongoDB后台系统开发详解》 在现代Web应用开发中,Spring Boot和MongoDB的结合使用已经成为一种常见的技术栈。本文将深入探讨如何利用这两种技术构建一个高效的后台系统,同时也会提及Node.js在其中...

    springboot Mongodb的集成与使用实例详解

    Spring Boot MongoDB集成与使用实例详解 Spring Boot框架是当前最流行的Java Web框架之一,它提供了许多便捷的功能帮助开发者快速构建Web应用程序。 MongoDB是当前最流行的NoSQL数据库之一,它提供了高性能的数据...

    基于springboot+mongodb搭建的简约个人博客系统.zip

    《基于SpringBoot+MongoDB搭建的简约个人博客系统详解》 在现代Web开发领域,SpringBoot框架因其便捷的配置和快速开发能力而备受推崇。同时,随着NoSQL数据库的广泛应用,MongoDB以其灵活性和高性能成为了许多项目...

Global site tag (gtag.js) - Google Analytics