GreenDao 2.2 GreenDao 3.0のアップグレードに適した方法
4701 ワード
前言.なぜGreendao 3.0にアップグレードしたのですか?
1.複数開発
従来のデータベース構築テーブル構築Daoなどの操作で新たにmoduleを開き、統合された場所でデータベース構築テーブルを管理していたが、現在はEntityを直接書くことができるようになった.多くの人が開発する時、自分で自分のEntityを管理すれば、以前のように衝突して犬になる必要はありません.
2.構造が簡潔で便利である
従来はCreateTable addEntity(")などの方法で表を作成していましたが、現在はEntityで3.0の注釈文法を使うだけです
3.注記の使用
以前のEntityは常に生成され上書きされていたので、Entityのコードを変更することは推奨されなかったので、Entityに注釈を付けることができず、gsonの@SerializedName(「id」)という戻りフィールドと自作フィールドが異なる注釈を放棄することになった.3.0以降Greendao自身が注釈を使っているので、私たちも使えます.
4.データベースのセキュリティ
データベース暗号化3.0のGreenDaoは、独自の暗号化機能を提供しています.
アップグレードの道
公式サイトによると、ここのアップグレードには2つの道があります.1つは、以前にコードを生成したモジュールを保持し、もう1つはエンティティクラスを移行し、以前の他の生成ファイルを削除することです.ここでは2つ目の方法をお勧めします.1つ目は、アップグレードが徹底していないと穴が開くような気がします.
1.前のEntityを保持
ここではフォルダ内のEntityを移行し、以前の生成構成を直接削除することを選択できます.
settings.gradleの中のincludeは前のmoduleを削除し、メインbuild.gradleのpreBuild.dependsOnのモジュールも削除します.
2.gradleのアップグレード
build.gradleのdependenceでバージョン番号をアップグレードし、次のように変更します.
3.構成変更先アドレス
以前に生成に使用したModuleを廃棄したので、以前にModuleに配置したものを工事のbuild.gradleに補充します.
上部に
dependencies{}の下に
4.派生部分を削除し、注記、プライマリ・キー、依存、entityを加える
以前のコードの派生コードを削除します.getter setterメソッドなど、コメントに包まれているコード/*ToOne*/ 以下のように削除できます.
前にこのコメントに包まれていた属性を削除し、前に@Transientを付けます.
次のgetsetメソッドは保持したり、削除して再生成したりすることができます.しかし、ここで@Transient注釈を付けた属性はgetsetメソッドを自動的に生成しないので、runが一度生成してから@Transient注釈を加えることができます.
次に、以前にテーブルを作成した古いコードの特殊な書き方を、新しいバージョンの注釈の書き方に変更します.
この過程でRunを頻繁に変更する可能性があります.この場合、buildのときにこれらのDaoになってから、ビジネスのコードをコンパイルするため、工事中の様々な赤い線を考慮しないことができます.だから、次のエラーがgreendaoとは関係ないのを見たら、こちらが通過したことを説明します.グリーンdaoの生成エラーであれば心配する必要はありませんが、これらのエラーの記述は正確な位置と非常に分かりやすいものです.
いくつかのエラーが表示されます.
プライマリ・キーは追加されていません
@keepを付ける必要があります
表関係を設定する必要があります.ToOneかToManyが漏れているはずです
5.前後文法の比較
一般的には、このようなアップグレード操作をする前に3.0文法について知っているはずですが、よく知らない場合は、この文章の注釈部分を見てみましょう.前の2.2のあるコードは3.0のある注釈に変更すべきです
http://www.cnblogs.com/dsxniubility/p/5699543.html
6.パッケージ名ファイルを置き換える
全文検索パッケージ名を次の
7.最終的にいくつかのコンパイルエラーを解決する
1.DaoOpenHelperからDevOpenHelperに変更
2.sqldatabaseをdatabaseに変更
3.getWritableDatabase()をgetWritableDb()に変更
これで完了
1.複数開発
従来のデータベース構築テーブル構築Daoなどの操作で新たにmoduleを開き、統合された場所でデータベース構築テーブルを管理していたが、現在はEntityを直接書くことができるようになった.多くの人が開発する時、自分で自分のEntityを管理すれば、以前のように衝突して犬になる必要はありません.
2.構造が簡潔で便利である
従来はCreateTable addEntity(")などの方法で表を作成していましたが、現在はEntityで3.0の注釈文法を使うだけです
3.注記の使用
以前のEntityは常に生成され上書きされていたので、Entityのコードを変更することは推奨されなかったので、Entityに注釈を付けることができず、gsonの@SerializedName(「id」)という戻りフィールドと自作フィールドが異なる注釈を放棄することになった.3.0以降Greendao自身が注釈を使っているので、私たちも使えます.
4.データベースのセキュリティ
データベース暗号化3.0のGreenDaoは、独自の暗号化機能を提供しています.
アップグレードの道
公式サイトによると、ここのアップグレードには2つの道があります.1つは、以前にコードを生成したモジュールを保持し、もう1つはエンティティクラスを移行し、以前の他の生成ファイルを削除することです.ここでは2つ目の方法をお勧めします.1つ目は、アップグレードが徹底していないと穴が開くような気がします.
1.前のEntityを保持
ここではフォルダ内のEntityを移行し、以前の生成構成を直接削除することを選択できます.
settings.gradleの中のincludeは前のmoduleを削除し、メインbuild.gradleのpreBuild.dependsOnのモジュールも削除します.
2.gradleのアップグレード
build.gradleのdependenceでバージョン番号をアップグレードし、次のように変更します.
compile 'org.greenrobot:greendao-generator:3.0.0'
compile 'org.greenrobot:greendao:3.0.1'
3.構成変更先アドレス
以前に生成に使用したModuleを廃棄したので、以前にModuleに配置したものを工事のbuild.gradleに補充します.
上部に
apply plugin: 'org.greenrobot.greendao'
dependencies{}の下に
greendao {
targetGenDir 'src/main/java' //
daoPackage 'com.XXX.platform.dao'
}
4.派生部分を削除し、注記、プライマリ・キー、依存、entityを加える
以前のコードの派生コードを削除します.getter setterメソッドなど、コメントに包まれているコード/*ToOne*/ 以下のように削除できます.
/** To-one relationship, resolved on first access. */
public OrderBase getOrderBase() {
Long __key = this.orderId;
if (orderBase__resolvedKey == null || !orderBase__resolvedKey.equals(__key)) {
if (daoSession == null) {
throw new DaoException("Entity is detached from DAO context");
}
OrderBaseDao targetDao = daoSession.getOrderBaseDao();
OrderBase orderBaseNew = targetDao.load(__key);
synchronized (this) {
orderBase = orderBaseNew;
orderBase__resolvedKey = __key;
}
}
return orderBase;
前にこのコメントに包まれていた属性を削除し、前に@Transientを付けます.
// KEEP INCLUDES - put your custom includes here
//
// KEEP INCLUDES END
// KEEP FIELDS - put your custom fields here
// getter setter
// KEEP FIELDS END
次のgetsetメソッドは保持したり、削除して再生成したりすることができます.しかし、ここで@Transient注釈を付けた属性はgetsetメソッドを自動的に生成しないので、runが一度生成してから@Transient注釈を加えることができます.
次に、以前にテーブルを作成した古いコードの特殊な書き方を、新しいバージョンの注釈の書き方に変更します.
この過程でRunを頻繁に変更する可能性があります.この場合、buildのときにこれらのDaoになってから、ビジネスのコードをコンパイルするため、工事中の様々な赤い線を考慮しないことができます.だから、次のエラーがgreendaoとは関係ないのを見たら、こちらが通過したことを説明します.グリーンdaoの生成エラーであれば心配する必要はありませんが、これらのエラーの記述は正確な位置と非常に分かりやすいものです.
いくつかのエラーが表示されます.
Error:Execution failed for task ':platform:greendao'.
> Currently only single FK columns are supported: ToOne 'orderBase' from OrderXXX to OrderBase
プライマリ・キーは追加されていません
Error:Execution failed for task ':platform:greendao'.
> Can't replace field in /Users/dsx/Documents/XXX/platform/src/main/java/com/XXX/platform/bean/OrderXXX.java:43 with generated version.//
If you would like to keep it, it should be explicitly marked with @Keep annotation.
Otherwise please mark it with @Generated annotation
@keepを付ける必要があります
Error:Execution failed for task ':platform:greendao'.
> Can't add field `Variable(type=VariableType(name=com.xxx.platform.dao.OrderBase, isPrimitive=false, originalName=OrderBase, typeArguments=null), name=orderBase)` //
for entity OrderXXX due to: Unsupported type com.xxx.platform.dao.OrderBase
表関係を設定する必要があります.ToOneかToManyが漏れているはずです
5.前後文法の比較
一般的には、このようなアップグレード操作をする前に3.0文法について知っているはずですが、よく知らない場合は、この文章の注釈部分を見てみましょう.前の2.2のあるコードは3.0のある注釈に変更すべきです
http://www.cnblogs.com/dsxniubility/p/5699543.html
6.パッケージ名ファイルを置き換える
全文検索パッケージ名を次の
// old package name
import de.greenrobot.dao.database.Database;
...
// new package name
import org.greenrobot.greendao.database.Database;
...
7.最終的にいくつかのコンパイルエラーを解決する
1.DaoOpenHelperからDevOpenHelperに変更
2.sqldatabaseをdatabaseに変更
3.getWritableDatabase()をgetWritableDb()に変更
これで完了