您的位置:首页 > 其它

greenDAO系列4--构建模型

2015-08-23 14:34 411 查看
本文转自:http://my.oschina.net/u/1052509/blog/312590

摘要 在项目中使用greenDAO的第一步是创建实体模型,实体模型代表你应用中会使用到的持久化数据。基于该模型,greenDao生产DAO类相关的java代码。
android sqlite greenDAO

在项目中使用greenDAO的第一步是创建实体模型,实体模型代表你应用中会使用到的持久化数据。基于该模型,greenDao生产DAO类相关的java代码。

该模型本身是通过java代码来定义的。它很简单:参考DaoExampleGenerator项目,创建一个java项目。详情可查看“如何开始”的章节。





上图描述构建实体的相关类,你可以使用这些类描述你的特定模型。

模式(Schema)

实体(entity)属于一个模式(schema)。模式是你需要定义的第一个对象。调用其构造方法,传入其模式版本(数据库版本)和默认Java包。

?
当greenDAO生成entities,DAOs和JUnit测试时会用到缺省包名。如果在项目中它们都采用缺省值,你现在就已经完成了第一步。 如果你想将DAO和测试类放在指定的包名,可以如下设置schema:

?
schema中还有两个实体缺省标识可以设置。分别表示实体为主动和使用保留片段。这些特性文档中没有说明,可以看看项目的测试代码:

?
实体

实体中有几个设置你可以改变,最重要的是你可以添加实体属性(properties):

?
除了属性,还可为该实体添加to-one和to-many关系。

属性和主键

上一节展示了如何添加属性到实体。实体类的addXXXProperty方法返回PropertyBuilder对象,可用于配置属性。例如,用columnName方法自定义字段名。创建索引或关系时需要访问属性对象,可调用PropertyBuider对象的getProperty()方法获取。

主键限制:目前,实体必须有一个long或Long类型的属性作为主键。这是Android和SQLite的推荐做法。greenDAO未来将支持更多的主键方案,但未必完全支持。一种变通的方法:你可使用long类型的主键和用一个唯一索引为真正“意图”的主键。

缺省

greenDAO尽量使用合理的缺省值,故开发者无需处处都设置。如数据库的表名和字段名源于实体和属性的名字。数据库缺省命名,不使用java的驼峰命名风格,而是全部大写且用下划线分割单词。如:属性名为“creationDate”将变成数据库字段“CREATION_DATA”。

关系

To-one和to-many关系的具体说明可查看“关系”章节。

继承,接口和序列化

实体类可以继承非实体类。其父类可以通过setSuperclass(String)方法指定(注意:目前不可能有一个实体类作为作为其他实体类的父类)。举例:

?
通常最好使用接口作为实体的公共基础属性和行为。如:实体A和B公共拥有一组属性,这些属性可以定义在接口C,如下例子,同时设置实体B为可序列化:

?
进行生成

schema定义好后,便可进行代码生成。在生成器项目(一个有静态main方法的Java项目)中,初始化DaoGenerator并调用generateAll方法。

?
只需指定schema类和一个目标目录,通常是一个Android项目的源文件夹,如果测试类在另外一个目录,可在第三个参数指定。

保留片段

通常,实体类每生成一次都会被覆盖。greenDAO可以在实体类中保留自定义的代码片段。使其生效,可在schema调用enableKeepSectionsByDefault()或对实体调用setHasKeepSections(true)。一旦生效,三个保持片段就会在代码中生成:

?
现在便可将你自定义代码放在KEEP [...] 与 KEEP [...] END之间。不要修改KEEP部分的注释。KEEP之间的代码在代码生成过程中会保留。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: