Submit Search
Upload
AndroidでActiveRecordライクにDBを使う
•
10 likes
•
9,603 views
Fujimura Munehiko
Follow
2013/12/14 発表
Read less
Read more
Technology
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
Michio Koyama
20181031 springfest spring data geode
20181031 springfest spring data geode
Masaki Yamakawa
Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)
Michio Koyama
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511
Takefumi MIYOSHI
Teclab3
Teclab3
Eikichi Yamaguchi
Recommended
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
Michio Koyama
20181031 springfest spring data geode
20181031 springfest spring data geode
Masaki Yamakawa
Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)
Michio Koyama
はじめてのCouch db
はじめてのCouch db
Eiji Kuroda
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Synthesijer - HLS frineds 20190511
Synthesijer - HLS frineds 20190511
Takefumi MIYOSHI
Teclab3
Teclab3
Eikichi Yamaguchi
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
Michio Koyama
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
Pierre Ricadat
Springでdao 20070413
Springでdao 20070413
Funato Takashi
d3sparql.js
d3sparql.js
Toshiaki Katayama
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Michio Koyama
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
Naoyuki Yamada
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
Michio Koyama
ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
SolrとElasticsearchの比較
SolrとElasticsearchの比較
genta kaneyama
Xslt
Xslt
kmiyako
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス
Michio Koyama
Jetpack datastore入門
Jetpack datastore入門
furusin
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
Michio Koyama
jQuery超入門編
jQuery超入門編
Yasuhito Yabe
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
RとCDISC
RとCDISC
Masafumi Okada
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
じゅん なかざ
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
Insight Technology, Inc.
More Related Content
What's hot
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
Michio Koyama
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
Pierre Ricadat
Springでdao 20070413
Springでdao 20070413
Funato Takashi
d3sparql.js
d3sparql.js
Toshiaki Katayama
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Michio Koyama
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
Naoyuki Yamada
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
Michio Koyama
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
Michio Koyama
ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
SolrとElasticsearchの比較
SolrとElasticsearchの比較
genta kaneyama
Xslt
Xslt
kmiyako
Mongodb 紹介
Mongodb 紹介
Ryo Matsumura
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス
Michio Koyama
Jetpack datastore入門
Jetpack datastore入門
furusin
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
Michio Koyama
jQuery超入門編
jQuery超入門編
Yasuhito Yabe
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
RとCDISC
RとCDISC
Masafumi Okada
What's hot
(20)
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
.NETからActive Directoryデータにアクセス ~組織単位(OU)情報の取得と表示~
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
Springでdao 20070413
Springでdao 20070413
d3sparql.js
d3sparql.js
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~ユーザ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
ScalaMatsuri 2016
ScalaMatsuri 2016
SolrとElasticsearchの比較
SolrとElasticsearchの比較
Xslt
Xslt
Mongodb 紹介
Mongodb 紹介
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
.NETからActive Directoryにアクセス
.NETからActive Directoryにアクセス
Jetpack datastore入門
Jetpack datastore入門
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
jQuery超入門編
jQuery超入門編
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
RとCDISC
RとCDISC
Similar to AndroidでActiveRecordライクにDBを使う
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
じゅん なかざ
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
Insight Technology, Inc.
Introduction of Rhodes
Introduction of Rhodes
Hitoshi Kuroyanagi
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
Ppl
Ppl
Seizan Shimazaki
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
Azureで作るnodeアプリケーション①
Azureで作るnodeアプリケーション①
vx-pc-club
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
tak-nakamura
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Osamu Monoe
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
Yohei Sasaki
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
cocos2d-x 開発の効率化
cocos2d-x 開発の効率化
Akihiro Matsuura
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008
Yoshiki Kurihara
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
Yu Nobuoka
Cocos2dx 8hour
Cocos2dx 8hour
Tomohiko Okita
Android app Development by Rhodes
Android app Development by Rhodes
Hitoshi Kuroyanagi
Macでcocos2d-x 2.1.2を使用した、Androidアプリの開発環境構築について
Macでcocos2d-x 2.1.2を使用した、Androidアプリの開発環境構築について
Tomoaki Shimizu
Similar to AndroidでActiveRecordライクにDBを使う
(20)
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
Introduction of Rhodes
Introduction of Rhodes
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Ppl
Ppl
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
Azureで作るnodeアプリケーション①
Azureで作るnodeアプリケーション①
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
cocos2d-x 開発の効率化
cocos2d-x 開発の効率化
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
Cocos2dx 8hour
Cocos2dx 8hour
Android app Development by Rhodes
Android app Development by Rhodes
Macでcocos2d-x 2.1.2を使用した、Androidアプリの開発環境構築について
Macでcocos2d-x 2.1.2を使用した、Androidアプリの開発環境構築について
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(8)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
AndroidでActiveRecordライクにDBを使う
1.
Androidで ActiveRecordライクに DBを扱う @kurobara 1
2.
アジェンダ • ActiveAndroidとは • インストール方法 •
設定 • モデル定義 • insert処理 • delete処理 • クエリ 2
3.
こんなコード書きたいです? • • コードに生のSQL処理 カーソルを使ってオブジェクトへのマッピング 3
4.
ActiveAndroidとは • Android向けのO/Rマッパー • ActiveRecordモデルがベース •
面倒なDBへのアクセスが容易になる • 設定内容が非常にシンプル • 現在も開発は継続中 • ドキュメントは少ない・・・ • https://github.com/pardom/ActiveAndroid 4
5.
インストール方法 • • 以下の手順でビルドします ビルド後に、Andoridプロジェクトのビルドパ スに追加します $ git clone
https://github.com/pardom/ActiveAndroid.git $ cd ActiveAndroid $ sh gradlew build どちらか好きな方法で $ mvn clean install 5
6.
利用設定 • 以下の2種類の設定方法があります。 • AndroidManifest.xmlに記述 •
コードで詳細設定を記述 6
7.
AndroidManifestに記述 • 以下のような形でAndoroidManifest.xmlに記述します。 • これがActiveAndroidにおける最低限の規約です。 初期化設定 DBとバージョン設定 a 7
8.
詳細設定方法(1/3) • ソースコード上で設定する場合、以下を用意します • • • Applicationクラスを継承したクラス AndroidManifest.xmlに上記クラスを指定 既存のコード(既にアプリがある)でアプリケーション クラスを継承している時の為に使用 • ライブラリを作るとき等に使う場合に使用 8
9.
詳細設定方法(2/3) • 設定できる内容は、以下のものです。 • データベース名 • データベースバージョン • キャッシュサイズ(デフォルトは1KByte) • モデルに使うクラス指定 • モデルの型情報をシリアライズするクラス指定 9
10.
詳細設定方法(3/3) • 以下のような感じで設定を実装します。 AtiveAndroidの設定 a 第2引数はログ 停止処理 10
11.
モデル定義 (1/4) • RubyのActiveRecordのモデル定義 Rails3.x系の定義 validation有 Rails4.x系の定義 11
12.
モデルの定義 (2/4) • • ActiveAndroidのモデル定義 他のORMにもあるようなアノテーションで設定 テーブル名の設定 Modelクラスの継承 対象カラム名と制約の設定 12
13.
• モデルの定義 (3/4) アノテーションに設定できる内容 • • テーブル名とカラム名が必須項目 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html 13
14.
モデルの定義 (4/4) • • Hogeが1に対してItemが複数の関連がある場合 Hoge側にヘルパーメソッドを定義 外部キーのカラム名 14
15.
insert処理 (1/3) • ActiveRecordのコード • • インスタンスを用意し、値を設定、最後にsaveメソッドを実行 実行されるSQL 15
16.
insert処理 (2/3) • ActiveAndroidのコード • ActiveRecordと同じコードが書ける • • アクセッサ次第だが・・・ 実行されるSQL(ActiveRecordと同じ) 16
17.
insert処理 (3/3) • トランザクションとバルクインサート • • トランザクション中に複数回、saveメソッドを実行すればよい rollbackについてはモデルにて定義しておくこと トランザクション 開始 トランザクション 成功 トランザクション 終了 17
18.
delete処理 (1/4) • delete処理は3種類 • オブジェクトをロードしてから削除する方法 • 静的メソッドを使用して削除する方法 • クエリを組み立てて削除する方法 18
19.
delete処理 (2/4) • オブジェクトをロードしてから削除する方法 • 主キーを指定することでitemオブジェクトを取得できる • modelクラスが持つdeleteメソッドで削除実施 19
20.
delete処理 (3/4) • 静的メソッドを使用して削除する方法 • 対象テーブルと主キーが分かってる場合、一番便利 • 前ページのような無駄なselectクエリを発行しなくて済む 20
21.
delete処理 (4/4) • クエリを組み立てて削除する方法 • 複数の行データを削除できる • 直感的に使えるので、扱いやすい • 扱い易い反面、プレースホルダが面倒・・・ 21
22.
クエリ (1/3) • ActiveAndroidの検索クエリ • • 直感的にSQLを書くような形で使用できる (参考) s2jdbcのクエリ • s2jdbcの使用経験があれば、理解しやすい 22
23.
クエリ (2/3) • where句を付け、idでソートする • where句はメソッドチェーンにはできないことに注意 • offsetとlimitをつけることもできる • groupByやhavingを使うこともできる 23
24.
クエリ (3/3) • テーブル結合を行うようなクエリは注意 • • • クエリ生成は、ActiveAndroidで実施 クエリ実行結果を自分でcursor操作する必要がある 静的型付け言語故、結果のカラムが変わる場合に対応しきれない • 別々のテーブルにクエリ投げてから、コード上でjoin出来なくもないけど・・・ 24
25.
まとめ • ActiveRecordライクなので、扱い易い • s2jdbcの使用経験があれば学習コストは低い と言えそう • Modelクラスを継承したクラスを作るだ けで、面倒な処理を大幅に軽減できる •
一方で、以下の点に注意 • テーブル定義にコードが引きづられや すくなること • 複雑なクエリの場合、手間がかかる 25
Download now