Morphia的@Entity注解

本文详细介绍了如何使用Morphia的@Entity注解来映射Java对象到MongoDB集合。包括实体类的基本定义、设置集合名称、无参构造方法的重要性、如何避免在文档中存储类名等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义实体

   1、@Entity

    如果你想通过Morphia把你的对象保存到Mongo中,你首先要做的是使用@Entity注解你的类:

 

[java]  view plain  copy
  1. import com.google.code.morphia.annotations.Entity;  
  2.    
  3. @Entity  
  4. public class Hotel {  
  5. ...  
  6. }  

A、名称和构造方法

 你可以为你的MongoDB DBConllection设置名称。必须有一个无参的默认构造方法。

[java]  view plain  copy
  1.    @Entity("hotels")  
  2. public class Hotel {  
  3. ...  
  4. public Hotel() {  
  5. }  
  6. ...  
  7. }  


  注意:你的默认构造方法不一定是public,也可以是protected或private。

B、在文档中的类名和怎样废弃使用类名

 在@Entity注解中提供了一个可选的参数用来标识是否在文档中保存类名。

  

[java]  view plain  copy
  1.  @Entity(value="hotels", noClassnameStored=true)  
  2. public class Hotel {  
  3. ...  
  4. public Hotel() {  
  5. }  
  6. ...  
  7. }  

 默认会在文档中保存类名。

 为什么要使用他哪?保存类名的主要目的是,当你在同一个链接中保存不同的实体对象,但是你想

 作为他们的基类或超类来读取。

 如:

[java]  view plain  copy
  1.    @Entity("animals"abstract class Animal { String name; }   
  2. @Entity("animals") Cat extends Animal { ... }   
  3. @Entity("animals") Dog extends Animal { ... }   
  4.    
  5. //And then performing the following query...  
  6. List<Animal> animals = ds.createQuery(Animal.class).asList();   


 正如你看到的,如果不在文档中保存类名,Morphia将不能正确的识别创建那个类。

 如果你在一个链接中只保存唯一的实体类型并且你还关心你的数据库大小,在你的@Entity注解上加上noClassnameStored=true

 参数将会是安全的。

 

 

 

 

英语水平有限,敬请大师斧正

 

原文:http://code.google.com/p/morphia/wiki/EntityAnnotation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值