問題タブ [greendao]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android でのマルチプロセスを使用した greendao セッション
私は、同じデータベースと同時に通信する多くの異なるアプリケーションを含む大規模なプロジェクトに取り組んでいます。
greendao
Android よりもパフォーマンスが向上するかどうかを確認するために、システムを に変更していますContentProvider
。
質問:
アプリケーションがデータベースと通信する必要があるたびに、新しいものを取得してDaoSession
からアクションを実行します。私は決して再利用していませんDaoSessions
。各アプリケーションに独自の があればもっと良いでしょうDaoSession
か?
データベースから同時に読み取り/書き込みを行うこれらすべてのアプリ間の同時実行性について懸念していることに注意してください。
- 現在、挿入が必要になるたびにこれを行っています:
this.daoMaster.newSession().getMyDao().insert(myDao);
DaoSession
または、どこかからa への参照を取得して、これを行う必要があります:
this.daoSession().getMyDao().insert(myDao);
android - dao と greendao の同時挿入。BEGIN EXCLUSIVE の実行時にデータベースがロックされる
同じプロセス内に 2 つの異なるスレッドが同時に持続しようとしている場合の並行性の問題について、greendao をテストしています。
同じプロセスで 2 つのスレッドを生成し、ランダムに入力された 100 個の dao を同時に挿入します。
GreenDao バージョン 1.3.0
何か間違ったことをしている場合や、さらに情報が必要な場合はお知らせください。ありがとうございます!
このエラーが発生し続けます:
dao を挿入するために使用される私のコードは次のとおりです。
android - greenDAO ジェネレーターが意味をなさないコンソール エラーを出す
私は一般的に Android 開発にかなり慣れていないため、greenDAO を使用したことさえありません。しかし、ジェネレーター クラス (エンティティをモデル化する場所) の作業に多くの時間を費やした後、最終的に GitHub で提供されている例に似たものを作成することができました。
次に、greenDAO のドキュメントに記載されているように、コードを Java アプリケーションとして実行して DAO ファイルを生成しました。ファイルは正常に生成されましたが、Eclipse のコンソールに次の行が表示されました。
ファイルが生成されたので、心配する必要があるかどうかは本当にわかりません。しかし、私が理解していないのは、私のコードに見られるように、「対多」関係を使用しているときに「対一」関係について言及されている理由です。(小切手帳エンティティには多くのトランザクション エンティティが存在する可能性があり、各小切手帳エンティティの名前を使用してトランザクションを関連付けるつもりです。)
戻ってコードの一部を修正する必要がありますか? 何か明確にする必要があるかどうか尋ねてください。お時間をいただきありがとうございます。
android - データベースに挿入する前に大量のデータをソートする
大きなjson文字列をダウンロードする必要があります。これにはaQueryを使用しています。次に、この文字列をオブジェクトのリスト (10k +) で解析し (これには Gson ライブラリを使用しています)、このリストをデータベース (GreenDAO で作成) に挿入する必要があります。しかし、挿入する前に、このリストをオブジェクトの文字列フィールドでソートする必要があります。このフィールドは異なる言語である可能性があるため、並べ替えに Collator クラスを使用しています。問題は、できるだけ少ないメモリを使用してそのようなことを行うにはどうすればよいかということです。
今のところ、文字列をダウンロードし(+文字列、ストリームも使用しようとしました)、それを解析し(+リスト)、ソートします(さらにいくつかのオブジェクト)。別のスレッドで実行していますが、完了してもメモリは解放されません。データが既にデータベースにあるときにデータを並べ替えることができれば(データを選択するときではなく、遅いです)、これを解決できると思いますが、方法がわかりません。
ここにいくつかのコードがあります。ファイルからのデータ読み込みです。JSON文字列をメモリに入れる代わりにInputStreamを使用しているファイルからロードするときも、メモリに同じ問題があります。
ここにパーサースレッドがあります。コンストラクターは 2 つあります。1 つは Web からのロード用 (文字列パラメーター) で、もう 1 つはファイルからのロード用 (InputStream パラメーター) です。
すべての GreenDAO オブジェクトは静的です。解析は、最初の起動時 (ファイルから) と「更新」ボタンのクリック (Web から) によってのみ行われます。最初の (ファイルからの) 解析が完了した後にアプリを再起動しても、解析が初めて行われた後と同じくらい多くのメモリを使用することに気付きました。
android - greendao 関連テーブルのフィールドで並べ替え
greenDao を使用して関連テーブルのフィールドで並べ替える方法はありますか? たとえば、車のテーブルとドライバーのテーブルがあります。各車両には運転手が付きます。今、私は車 (例: 青) を照会し、ドライバーの名前で並べ替えたいと考えています。
android - greenDao スキーマのアップグレード
green dao を使用したスキーマのアップグレード/移行に関する別の質問を見ました (こちら)
その回答には、スキーマのアップグレードを行うときに使用する適切なパターンのリンクがたくさんありますが、データを適切に移行するために実際にデータに対して行うことの例はなく、何かを見つけるのに苦労しています.
私の場合、移行は信じられないほど簡単です。既存のデータを変換したくありません。スキーマに新しいテーブルをいくつか追加する必要があるだけです。これはかなり一般的な状況だと思います。
ユーザーが既に保存したデータを削除せずに、スキーマに新しいテーブルを追加する最も簡単な方法は何ですか? 具体的な例をいただければ幸いです。
greenDao が DevOpenHelper に似たクラスを提供し、既存のテーブル/データを最初に削除せずに、スキーマに以前は存在しなかった新しいテーブル/列を追加するだけであれば素晴らしいことです。
android - greenDao データベースをクリーンアップ/削除する方法
現在、私は次のようにしています:
しかし、エンティティをデータベースに追加しようとすると、このテーブルが存在しないというクラッシュ ログが表示されます。
Edit1:データベースがロックされており、テーブルがまだ作成されていないために発生することはわかっています。だから私はこの問題を問題に減らしています - テーブルがgrrenDao/Sqliteでロックされているかどうかを知る方法は?
android - GreenDao がデータベースをセットアップできません
Android プロジェクトに GreenDao を使用しています。でもちょっと問題あり!データベース接続に障害があるため、アプリケーションを開始できません
エラー:
DevOpenHelper ステートメントの「this」に依存していると言う人もいます。しかし、これらすべての解決策は役に立ちません。
コードは次のとおりです。