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之间的代码在代码生成过程中会保留。
摘要 在项目中使用greenDAO的第一步是创建实体模型,实体模型代表你应用中会使用到的持久化数据。基于该模型,greenDao生产DAO类相关的java代码。
android sqlite greenDAO
在项目中使用greenDAO的第一步是创建实体模型,实体模型代表你应用中会使用到的持久化数据。基于该模型,greenDao生产DAO类相关的java代码。
该模型本身是通过java代码来定义的。它很简单:参考DaoExampleGenerator项目,创建一个java项目。详情可查看“如何开始”的章节。
上图描述构建实体的相关类,你可以使用这些类描述你的特定模型。
模式(Schema)
实体(entity)属于一个模式(schema)。模式是你需要定义的第一个对象。调用其构造方法,传入其模式版本(数据库版本)和默认Java包。
?
?
?
实体中有几个设置你可以改变,最重要的是你可以添加实体属性(properties):
?
属性和主键
上一节展示了如何添加属性到实体。实体类的addXXXProperty方法返回PropertyBuilder对象,可用于配置属性。例如,用columnName方法自定义字段名。创建索引或关系时需要访问属性对象,可调用PropertyBuider对象的getProperty()方法获取。
主键限制:目前,实体必须有一个long或Long类型的属性作为主键。这是Android和SQLite的推荐做法。greenDAO未来将支持更多的主键方案,但未必完全支持。一种变通的方法:你可使用long类型的主键和用一个唯一索引为真正“意图”的主键。
缺省
greenDAO尽量使用合理的缺省值,故开发者无需处处都设置。如数据库的表名和字段名源于实体和属性的名字。数据库缺省命名,不使用java的驼峰命名风格,而是全部大写且用下划线分割单词。如:属性名为“creationDate”将变成数据库字段“CREATION_DATA”。
关系
To-one和to-many关系的具体说明可查看“关系”章节。
继承,接口和序列化
实体类可以继承非实体类。其父类可以通过setSuperclass(String)方法指定(注意:目前不可能有一个实体类作为作为其他实体类的父类)。举例:
?
?
schema定义好后,便可进行代码生成。在生成器项目(一个有静态main方法的Java项目)中,初始化DaoGenerator并调用generateAll方法。
?
保留片段
通常,实体类每生成一次都会被覆盖。greenDAO可以在实体类中保留自定义的代码片段。使其生效,可在schema调用enableKeepSectionsByDefault()或对实体调用setHasKeepSections(true)。一旦生效,三个保持片段就会在代码中生成:
?
相关文章推荐
- 嵌入式相关方向
- LeetCode_ZigZag Conversion_006
- 匿名内部类实现多线程
- Linux学习笔记 - 版本选择与安装
- ASP.NET(3)——总结
- 文件操作(NSFileManager)
- Target_Action
- linux ngingx一些操作
- greenDAO系列3--又是介绍
- POJ 1111 Image Perimeters(dfs)
- 利用BufferedInputStream bufferedOutputStream读写文件
- PHP+memcached+Mysql(主从)
- Java之旅hibernate(4)——hibernate入门示例
- setDefaultCloseOperation()参数得使用说明
- 编写高质量代码改善C#程序的157个建议——建议131:用PascalCasing命名公开元素
- 一个简单的反汇编引擎的实现小记
- greenDAO系列2--如何开始
- 冒泡函数
- 去哪网实习总结:JavaWeb中文传参乱码问题的解决(JavaWeb)
- Spring Object/XML mapping example