Mongodb的ORM框架Morphia技术POJO类注解详解.docxVIP

Mongodb的ORM框架Morphia技术POJO类注解详解.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Mongodb的ORM框架Morphia技术POJO类注解详解 1、@Entity 如果你想通过Morphia把你的对象保存到Mongo屮,你首先要做的是使用@Entity注解 你的类: import com.google.code.morphia.annotations.Entity; @Entity public class Hotel { ? ? ? } A、 名称和构造方法 你可以为你的MongoDB DBConllection设置名称。必须有一个无参的默认构造方法。 @Entity(hotelsH) public class Hotel { ? ? ? public Hotel() { } ? ? ? } 注意:你的默认构造方法不--定是public,也可以是protected或private。 B、 在文档中的类名和怎样废弃使用类名 在@Entity注解中提供了一个可选的参数用來标识是否在文档中保存类名。 @Entity(value=hotels, noClassnameStored=true) public class Hotel { ? ? ? public Hotel() { } ? ? ? } 默认会在文档中保存类名。 为什么要使用他哪?保存类名的主要目的是,当你在同一个链接中保存不同的实体对象, 但是你想作为他们的基类或超类來读収。 如: @Entity(Hanimals”)abstract class Animal {String name;} @Entity(,,animalsH) Cat extends Animal {...} @Entity(Hanimals,1) Dog extends Animal {...} //And then performing the following query… ListAnima卜 animals = ds.createQuery(Animal.class).asList(); 正如你看到的,如果不在文档中保存类名,Morphia将不能正确的识别创建那个类。 如果你在一个链接屮只保存唯一的实体类型并且你还关心你的数据库大小,在你的 @Entity注解上加上noClassnameStored=true参数将会是安全的。 2、@ld 被@Entity注解的类必须有一个唯一的@ld值;这些值被保存在MongoDB数据库的“id” 属性中,这是一个必须的位索引。像在Hotel类中: @Entity public class Hotel{ 如上所示:被@ld注解的ID是Objectld类型的,这样,你就不用担心Id的生成问题了, Mongo会自动为你生成一个唯一的新的Objectld对象(就像MySQL中的autojncrement类 型的ID)。如果你想使用其他的类型作为ID,那么在你保存数据时就必须手动为ID赋值。 3、@1 ndexed 此注解是为某个字段申请一个索引。当datastore.ensurelndexesf)方法被调用时 这些 索引就会被申请??更多如下: 把创ndexed注解在你想让MongoDB创建索引的属性上。 @Entity public class Product { @ld private Objectld id; @lndexed(value=lndexDirection.ASC, name=,,upcH, unique=true, dropDups=true) private String upcSymbol; } 参数说明如下: value: 表名这个索引的方向;IndexDirection.ASC(升序),lndexDirection.DESC(降序), lndexDirection.BOTH(两者);默认为升序。 name:被创建的索引的名称; mongodb默认创建的索引名的格式为 (keyl_l/-l_key2_l)o unique:创建一个唯一索引,当创建唯一索引后,当在此字段插入相同的值时将会报错。 true:为唯一索引;false:不是唯一索引;默认为:false? dropDups:此参数表明,当为某个字段创建唯一索引吋,删除其他相同值的记录。只保 留笫一条记录。true:删除重复;false:不删除重复(当有重复值时唯一索引创建失败);默认 为 false。 向MongoDB申请创建索引Datastore.ensurelndexes()S要被调用。这个方法应该在你已 经使用Morphia注册了你的实体类后被调用。他将会异步创建你的所有索引。这个动作也 许会在你每次启动你的应用时都被执行。 注意:当在一个存在的系统上,创建已经存在的索引时,将不会花费任何事件(也不会 做任何事情)。 Morphia m =..… D

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档